javascript - 为什么ajax数据传输后PHP代码没有运行?
问题描述
$(function () {
$(
"#contactForm input,#contactForm textarea,#contactForm button"
).jqBootstrapValidation({
preventSubmit: true,
submitError: function ($form, event, errors) {
// additional error messages or events
},
submitSuccess: function ($form, event) {
event.preventDefault(); // prevent default submit behaviour
// get values from FORM
var name = $("input#name").val();
var email = $("input#email").val();
var phone = $("input#number").val();
var city = $("input#city").val();
var qualification = $("input#qualification").val();
var about = $("textarea#about").val();
var reason = $("textarea#reason").val();
var firstName = name; // For Success/Failure Message
// Check for white space in name for Success/Fail message
if (firstName.indexOf(" ") >= 0) {
firstName = name.split(" ").slice(0, -1).join(" ");
}
alert("Fuck " + $("input#name").val());
$this = $("#sendMessageButton");
$this.prop("disabled", true); // Disable submit button until AJAX call is complete to prevent duplicate messages
$.ajax({
url: "/assets/mail/register.php",
type: "POST",
data: {
name: name,
phone: phone,
email: email,
city: city,
qualification: qualification,
about: about,
reason: reason,
},
cache: false,
success: function () {
// Success message
$("#success").html("<div class='alert alert-success'>");
$("#success > .alert-success")
.html(
"<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×"
)
.append("</button>");
$("#success > .alert-success").append(
"<strong>Your message has been sent. </strong>"
);
$("#success > .alert-success").append("</div>");
//clear all fields
$("#contactForm").trigger("reset");
},
error: function () {
// Fail message
$("#success").html("<div class='alert alert-danger'>");
$("#success > .alert-danger")
.html(
"<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×"
)
.append("</button>");
$("#success > .alert-danger").append(
$("<strong>").text(
"Sorry " +
firstName +
", it seems that my mail server is not responding. Please try again later!"
)
);
$("#success > .alert-danger").append("</div>");
//clear all fields
$("#contactForm").trigger("reset");
},
complete: function () {
setTimeout(function () {
$this.prop("disabled", false); // Re-enable submit button when AJAX call is complete
}, 1000);
},
});
},
filter: function () {
return $(this).is(":visible");
},
});
$('a[data-toggle="tab"]').click(function (e) {
e.preventDefault();
$(this).tab("show");
});
});
$("#name").focus(function () {
$("#success").html("");
});
PHP 代码
<?php
if(empty($_POST['name']) ||
empty($_POST['number']) ||
empty($_POST['qualification']) ||
empty($_POST['city']) ||
empty($_POST['about']) ||
empty($_POST['reason']) ||
!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
{
echo "<script>alert(No arguments Provided!);</script>";
return false;
}
echo "<script>alert(Come On);</script>";
?>
从 HTML 输入视图中,我成功地获取了数据。但是 PHP 文件中的代码由于某种原因没有运行。
ajax 代码显示“消息已发送”,仅在数据传输成功但 PHP 代码未运行时才显示我想将 ajax 代码中的数据添加到 MySQL 数据库中,为此我需要将数据传输到PHP文件
解决方案
AJAX 请求的响应不会自动执行。如果你想让它被执行,你需要在你的函数中将它添加到 DOM 中success
。
success: function (response) {
$('body').append(response); // execute the returned script.
// Success message
$("#success").html("<div class='alert alert-success'>");
$("#success > .alert-success")
.html(
"<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×"
)
.append("</button>");
$("#success > .alert-success").append(
"<strong>Your message has been sent. </strong>"
);
$("#success > .alert-success").append("</div>");
//clear all fields
$("#contactForm").trigger("reset");
},
推荐阅读
- nginx - grpc_send_timeout 不起作用,Nginx 意外关闭 GRPC 流
- ios - 位置权限对话框在 1 秒后消失
- c++ - 从文件中读取矩阵
- firebase - Flutter:'package:google_maps_flutter_platform_interface/src/types/maps_object.dart':断言失败:'value!= null':不正确
- excel - 满足各种条件时仅求最小值。EXCEL 和/或 SMARTSHEET
- javascript - 当子对象变量被修改时如何更新父对象变量并且它的父对象和嵌套JSON中的大多数父对象相同
- floating-point - ARM64 需要(或适合)VFPV3 吗?
- git - 如何使用 github 操作从 Github 中存储库 A 的工作流作业触发存储库 B(下游作业)中的工作流作业
- go - 在 golang 中使用代理时 all_proxy 在没有 sudo 的情况下挂起
- ios - Swift中'k'和'v'之间的枚举值有什么区别?