2013-09-28 3 views
0

У меня есть функция jQuery ajax для загрузки данных. Когда я тестирую Chrome, иногда он не вызывает функцию завершения запроса, и иногда она работает. Пожалуйста, дайте мне знать, что может быть причиной.Почему мои функции jQuery ajax ждут бесконечно

var request = $.ajax({ 
    url: data_url, 
    type: 'post', 
    data: "" 
}); 
request.done(function(result) 
{ 
    console.log("Done"); 
} 

URL-адрес и все правильно, потому что он работает когда-то, когда я нажимаю кнопку «Обновить». Это что-то, что мне нужно передать какой-то конечный код, когда я отправляю поток из браузера?

На стороне сервера я использую функцию эха PHP для отправки закодированного JSON.

+1

p/s: используйте 'GET', если вы просто извлекаете данные с сервера и не изменяете ничего на другом конце :) – Terry

+0

использовать fail() тоже или использовать always() и проверять наличие ошибки сообщение –

+0

Спасибо @Terry, он работает, когда я перешел на GET. – Nishanthan

ответ

0

Ваш бэкэнд висит. Причина, по которой она иногда срабатывает при обновлении, заключается в том, что браузер отменяет запрос при обновлении, в результате чего xhr завершается.

Вы можете попробовать с завитком из командной строки, чтобы убедиться:

$ curl -iX POST --data "" data_url 
+0

Это локальный сервер, и если я сразу же набираю URL-адрес в браузере, немедленно получите ответ. – Nishanthan

1

Ваш код не будет неправильным. Одна из проблем, с которыми я иногда сталкивался, заключалась в том, что веб-браузеры ограничивают количество одновременных запросов на серверы. Поэтому, если у вас есть точка останова, установленная в коде сервера, вы легко можете столкнуться с проблемой, которую вы описываете во время сеансов отладки. См. Также: How many concurrent AJAX (XmlHttpRequest) requests are allowed in popular browsers?

+0

Благодарим вас за ответ, но это единственная функция, выполняемая при загрузке окна. Нет других вызовов AJAX. – Nishanthan

Смежные вопросы