2015-09-21 2 views
0

-EDIT-Аякса несовместимого на сафари

Я пытался добавить некоторые обработки ошибок функции неисправной с error: function(jqXhr, status, error) но jqXhr.responseText пуст, поэтому я предполагаю, что я до сих пор не обработки ошибок должным образом.

-/Edit-

Я новичок в 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.

+1

В первом аяксе есть определение «cache: false», вы попробовали добавить это ко второму вызову ajax? –

+0

также является ли функция «displayRegisteredAlert», которая называется успехом во втором вызове ajax, фактически определена? –

+0

Да, и он называется OK в других браузерах, чем Safari. – Robert

ответ

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