Php AJAX Post在随后加载另一个动态页面后未捕获响应
以下代码用于允许用户发送查询。联系人表单在网站初始加载时加载,如果用户随后立即访问联系人表单并处理查询,则代码按预期工作。如果用户首先单击另一个选项卡,该选项卡使用AJAX动态加载内容,然后访问联系人页面并发送查询,则会出现问题 虽然消息已发送,但从服务器返回的成功消息只是在屏幕上回响,所有内容都已丢失。有人知道原因是什么吗 Jquery和AJAX代码Php AJAX Post在随后加载另一个动态页面后未捕获响应,php,jquery,ajax,Php,Jquery,Ajax,以下代码用于允许用户发送查询。联系人表单在网站初始加载时加载,如果用户随后立即访问联系人表单并处理查询,则代码按预期工作。如果用户首先单击另一个选项卡,该选项卡使用AJAX动态加载内容,然后访问联系人页面并发送查询,则会出现问题 虽然消息已发送,但从服务器返回的成功消息只是在屏幕上回响,所有内容都已丢失。有人知道原因是什么吗 Jquery和AJAX代码 $(document).ready(function() { var request; $("#EnquiryForm").submit(fun
$(document).ready(function() {
var request;
$("#EnquiryForm").submit(function(event){
if (request) {
request.abort();
}
event.preventDefault();
var $form = $(this);
var $inputs = $form.find("input, select, button, textarea");
var serializedData = $form.serialize();
$inputs.prop("disabled", true);
request = $.ajax({
url: "index.php",
type: "POST",
data: serializedData
});
request.done(function (response, textStatus, jqXHR){
alert(response);
});
request.fail(function (jqXHR, textStatus, errorThrown){
console.error("The following error occurred: " + textStatus, errorThrown);
});
request.always(function () {
$("#EnquiryForm")[0].reset();
$('#seniorEnquiries').prop('checked', true);
$('input').iCheck({
radioClass: 'iradio_square-red',
increaseArea: '20%' // optional
});
$inputs.prop("disabled", false);});
$('input').iCheck('enable');
})
})
PHP
$message = sendEnquiry();
echo $message;
您的代码运行在
document ready
上,并设置事件挂钩submit
,因为选项卡HTML是通过Ajax加载的,它没有附加任何事件挂钩,并且document ready
不会再次触发,因此表单是作为正常的post/get而不是通过Ajax提交的
通过每次在选项卡中加载表单html时设置
submit
钩子来修复它。您的代码在document ready
上运行,并设置事件钩子submit
,因为选项卡html是通过Ajax加载的,它没有附加任何事件钩子,并且不会再次触发document ready
,表单是作为普通的post/get提交的,而不是通过Ajax提交的
每次在选项卡中加载表单html时,通过设置
submit
hook来修复此问题。我通过将代码放在联系人表单中修复了此问题,而之前它是在加载主页期间加载的单独javascript文件中。谢谢你的回答。我通过将代码放在联系人表单中修复了这个问题,而之前它是在加载主页时加载的一个单独的javascript文件中。谢谢你的回答。