【发布时间】:2015-12-18 00:34:06
【问题描述】:
-编辑-
我尝试使用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。
【问题讨论】:
-
在第一个 ajax 中,有 "cache: false" 定义,您是否也尝试将其添加到第二个 ajax 调用中?
-
另外,第二次ajax调用成功时调用的函数“displayRegisteredAlert”是否真的定义了?
-
是的,并且在 Safari 以外的其他浏览器上调用 OK。
-
第二个函数似乎有语法错误 - 您需要在函数的结束括号 (");") 之前添加另一个右大括号 ("}")。
-
这是我更改错误处理程序时引入的错字 - 现在已编辑。
标签: javascript ajax safari cross-browser