ajax 在 Safari 上不一致
ajax inconsistent on Safari
-编辑-
我尝试使用 error: function(jqXhr, status, error)
向失败的函数添加一些错误处理,但是 jqXhr.responseText
是空的,所以我想我仍然没有正确处理错误。
-/编辑-
我是 ajax 的新手,必须使用这两个现有的 ajax 功能修改现有站点,这两个功能在 Chrome、IE 和 FF 中都可以正常工作,但仅第一个在 Safari 中工作。第二个失败了,但错误处理程序(我猜它没有正确设置?)并没有告诉我太多信息:
// works in each browser
$.ajax({
cache: false,
type: 'GET',
url: apiBaseUrl + 'GetCountries',
dataType: 'xml',
success: parseCountries,
error: function(){
$('.errorMessage').append('<p>' + errorMessage + '</p>');
}
});
// does not work in Safari
$.ajax({
cache: false,
type: 'GET',
url: apiBaseUrl + 'GetStandardTexts?page=login',
dataType: 'xml',
success: displayRegisteredAlert,
error: function(jqXhr, status, error){
var err = eval("(" + jqXhr.responseText + ")");
alert(err.Message);
}
});
我能看到的它们之间唯一真正的区别是第二个包含的 URL 和附加参数 ?page=login
。
我终于让它工作了。我不完全确定为什么但是添加 async:false
解决了 Safari 的问题。其他浏览器不需要。
$.ajax({
async: false, // only required on Safari
cache: false,
type: 'GET',
url: apiBaseUrl + 'GetStandardTexts?page=login',
dataType: 'xml',
success: displayRegisteredAlert,
error: function(jqXhr, status, error){
var err = eval("(" + jqXhr.responseText + ")");
alert(err.Message);
}
});
-编辑-
我尝试使用 error: function(jqXhr, status, error)
向失败的函数添加一些错误处理,但是 jqXhr.responseText
是空的,所以我想我仍然没有正确处理错误。
-/编辑-
我是 ajax 的新手,必须使用这两个现有的 ajax 功能修改现有站点,这两个功能在 Chrome、IE 和 FF 中都可以正常工作,但仅第一个在 Safari 中工作。第二个失败了,但错误处理程序(我猜它没有正确设置?)并没有告诉我太多信息:
// works in each browser
$.ajax({
cache: false,
type: 'GET',
url: apiBaseUrl + 'GetCountries',
dataType: 'xml',
success: parseCountries,
error: function(){
$('.errorMessage').append('<p>' + errorMessage + '</p>');
}
});
// does not work in Safari
$.ajax({
cache: false,
type: 'GET',
url: apiBaseUrl + 'GetStandardTexts?page=login',
dataType: 'xml',
success: displayRegisteredAlert,
error: function(jqXhr, status, error){
var err = eval("(" + jqXhr.responseText + ")");
alert(err.Message);
}
});
我能看到的它们之间唯一真正的区别是第二个包含的 URL 和附加参数 ?page=login
。
我终于让它工作了。我不完全确定为什么但是添加 async:false
解决了 Safari 的问题。其他浏览器不需要。
$.ajax({
async: false, // only required on Safari
cache: false,
type: 'GET',
url: apiBaseUrl + 'GetStandardTexts?page=login',
dataType: 'xml',
success: displayRegisteredAlert,
error: function(jqXhr, status, error){
var err = eval("(" + jqXhr.responseText + ")");
alert(err.Message);
}
});