Safari上的ajax不一致

时间:2015-09-21 10:33:02

标签: javascript ajax safari cross-browser

- 编辑 -

我尝试使用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

1 个答案:

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