- 编辑 -
我尝试使用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);
}
});
我可以看到的唯一真正区别是第二个包含的网址和其他参数?page=login
。
答案 0 :(得分:1)
我终于开始工作了。我不完全确定为什么,但添加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);
}
});