ajax在Safari上不一致

ajax inconsistent on Safari

本文关键字:不一致 Safari ajax      更新时间:2023-09-26

-EDIT-

我试图用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);    
  }  
});