使用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
request = undefined
error = undefined
PHP根本不返回任何内容。
就像我说的,这只发生在我在同一个域上加载另一个浏览器选项卡时,否则一切正常。我已经在Chrome和FireFox中进行了测试,在两种浏览器中都存在同样的问题。
我在两个标签中打开了这两个页面:
标签1: http://localhost/sbs/admin/edit-step/18(这是我的带有ajax的标签)
标签2: http://localhost/sbs/(我在第一个标签中的ajax不再正常工作后加载此标签页)
答案 0 :(得分:1)
您正面临错误'未定义的输入结束'这意味着在某些情况下,当你得到错误的回应然后预期。
此错误的可能原因
这不是在新标签中打开的问题,这是一个意外数据的问题
答案 1 :(得分:0)
我认为你的ajax调用中缺少contentType。
请在您的ajax请求中添加以下contenttype。
"contentType": "application/json; charset=utf-8",
这是你在ajax调用OR服务器端运行时错误或参数相关问题来调用服务的问题。
ajax请求始终在同一个域的多个选项卡上调用。