Точный длинный пример опроса?
Я создал функцию, которая должна выполнять длинный опрос и получать живые данные, которые "проталкиваются" ко мне. Прямо сейчас я тестирую объект json, который отформатирован таким образом, что он будет выглядеть, как только я получу данные. Кажется, как это работает точно до сих пор. Мне просто интересно, что вы об этом думаете? Вы бы его как-то рефакторировали или сделали бы это совсем по-другому?
var url = '../../path_to_script/respondents.json';
function fetchData() {
$.ajax({
url: url,
method: 'GET',
dataType: 'json',
contentType: "application/json; charset=utf-8",
cache: false,
success: function (data) {
//parseData(data);
setTimeout(function () { fetchData() }, 5000);
console.log(data);
},
error: function (data) {
setTimeout(function () { fetchData() }, 5000)
}
});
}
С уважением
3 ответа:
Я бы сделал некоторые изменения
- изменить
method
наtype
,method
не является допустимым параметром для$.ajax
. Это ошибка- удалить
contentType
, причемdataType: 'json'
достаточно иметь эти значения- делайте что-нибудь, когда есть ошибка. Используйте параметры ошибки, если они вам нужны. Например:
.
error: function (xhr, status, errorThrown) { alert("There was an error processing your request.\nPlease try again.\nStatus: " + status); }
Надеюсь, это поможет. Ура
Это работает, как и ожидалось. Поскольку вы мудро выбрали, чтобы запустить
setTimeout
, Как только запрос возвращается, не может быть "перекрывающихся" запросов. Это очень хорошо.В любом случае, вы можете использовать "новые" отложенные ajax-объекты jQuerys, что, вероятно, немного более удобно.
(function _poll() { $.getJSON( url ).always(function( data ) { console.log( data ); _poll(); }); }());
Примечание:
.always()
это brandnew (jQuery 1.6).Edit
Пример: http://jsfiddle.net/rjgwW/6/