【发布时间】:2015-12-23 05:27:40
【问题描述】:
我在使用 JQuery 和 PHP AJAX 时遇到了一个非常奇怪的问题。
我有一个通过 AJAX 提交的表单,它工作正常。问题是,当我在另一个浏览器选项卡中从同一站点加载另一个页面时,我的 ajax 请求不再适用于我的另一个选项卡。
这是我目前使用的代码:
Javascript:
$("#step-edit-form").submit(function(e){
e.preventDefault();
var data = $(this).serialize();
//Update order in the database
$.ajax({
type: 'POST',
url: ajax.ajaxurl,
data: data,
dataType: 'json',
cache: false,
success: function(data){
if(data.success == 0) {
$('.message').html(data.message).fadeIn()
console.log(data.message);
}
else if(data.success == 1) {
$('.save').hide();
$('.message').html('Saved Successfully').fadeIn().delay(3000).fadeOut();
formmodified = 0;
}
},
error: function(xhr, ajaxOptions, thrownError, request, error) {
console.log('xrs.status = ' + xhr.status + '\n' +
'thrown error = ' + thrownError + '\n' +
'xhr.statusText = ' + xhr.statusText + '\n' +
'request = ' + request + '\n' +
'error = ' + error);
}
});
});
我在控制台中得到了这个:
xrs.status = 200
抛出错误 = SyntaxError:输入意外结束
xhr.statusText = OK
请求 = 未定义
错误 = 未定义
PHP 什么也不返回。
就像我说的,这只发生在我在同一个域上加载另一个浏览器选项卡时,否则一切正常。我已经在 Chrome 和 FireFox 中进行了测试,两种浏览器都存在同样的问题。
我在两个标签中打开了这两个页面:
选项卡 1: http://localhost/sbs/admin/edit-step/18(这是我的 ajax 选项卡)
选项卡 2: http://localhost/sbs/(我加载此选项卡之后,我的第一个选项卡中的 ajax 不再正常工作)
【问题讨论】:
-
请注意,除非您将本地主机部署在公共域中,否则您的本地主机将不对外开放。
-
是的,我只是粘贴在那里以了解我在做什么。
-
所以将调试添加到服务器端并弄清楚发生了什么。我的猜测是某种 cookie/会话值存在问题。
-
@epascarello 你是对的。原来是 PHP 会话错误。为此,我已经把头发拉了好几个小时。谢谢。