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);    
  }  
});