Вызов Ajax отменяется браузером

Я использую платформу Prototype JS для вызовов Ajax. Вот мой код:

new Ajax.Request( '/myurl.php', {method: 'post', postBody: 'id='+id+'&v='+foo, onSuccess: success, onFailure: failed} );

function success(ret) {
console.log("success",ret.readyState, ret.status);
}
function failed(ret) {
console.log("failed",ret.readyState, ret.status);
}

В большинстве случаев это работает нормально, и функция успеха вызывается с кодом состояния 200. Примерно в 5% случаев в Safari функция успеха вызывается с кодом состояния 0.В этом случае, когда я смотрю на вкладку «Сеть» веб-инспектора, вызов ajax отображается со статусом «отменен». Я могу подтвердить журналами сервера, что запрос никогда не попадал на сервер. Это как если бы запрос ajax был немедленно отменен, даже не пытаясь подключиться к серверу. Я не нашел надежного способа воспроизвести это, кажется случайным. Я делаю это 20 раз, и такое бывает один раз.

Кто-нибудь знает, что может привести к отмене вызова ajax или возврату кода состояния 0?

6
задан Rob W 28 December 2011 в 20:16
поделиться