Вы не захотите отправлять HTTP-заголовки за 100 аккуратностью. Вы ни один не хочет генерировать больше запросы, чем необходимый.
Отправляют целый заказ в одном объекте JSON к серверу, к: сервер/порядок или сервер/порядок/новый. Возвратите что-то, что указывает на: server/order/order_id
Также рассматривает использование <ударяют>, СОЗДАЮТ забастовку> ПОМЕЩЕННЫЙ вместо POST
Вы можете использовать простой тайм-аут для рекурсивного вызова ajax_request.
success: function(xhr_data) {
console.log(xhr_data);
if (xhr_data.status == 'pending') {
setTimeout(function() { ajax_request(); }, 15000); // wait 15 seconds than call ajax request again
} else {
success(xhr_data);
}
}
Проведите проверку счетчика вокруг этой строки, и вы получите максимальное количество опросов.
if (xhr_data.status == 'pending') {
if (cnt < 6) {
cnt++;
setTimeout(function() { ajax_request(); }, 15000); // wait 15 seconds than call ajax request again
}
}
Вам не нужно делать что-либо в вашей функции ошибок, если вы не хотите подавать предупреждение или что-то в этом роде. тот простой факт, что это ошибка, предотвратит вызов функции успеха и, возможно, запуск другого опроса.
Вне моей головы:
$(function ()
{
// reference cache to speed up the process of querying for the status element
var statusElement = $("#status");
// this function will run each 1000 ms until stopped with clearInterval()
var i = setInterval(function ()
{
$.ajax(
{
success: function (json)
{
// progress from 1-100
statusElement.text(json.progress + "%");
// when the worker process is done (reached 100%), stop execution
if (json.progress == 100) i.clearInterval();
},
error: function ()
{
// on error, stop execution
i.clearInterval();
}
});
}, 1000);
});
большое спасибо за функцию. Она немного глючная, но вот исправление. Ответ roosteronacid не останавливается после достижения 100%, потому что неправильно используется функция clearInterval.
Вот рабочая функция:
$(function ()
{
var statusElement = $("#status");
// this function will run each 1000 ms until stopped with clearInterval()
var i = setInterval(function ()
{
$.ajax(
{
success: function (json)
{
// progress from 1-100
statusElement.text(json.progress + "%");
// when the worker process is done (reached 100%), stop execution
if (json.progress == 100) clearInterval(i);
},
error: function ()
{
// on error, stop execution
clearInterval(i);
}
});
}, 1000);
});
Функция clearInterval() принимает в качестве параметра id интервала, и тогда все в порядке ;-)
Будьте здоровы! Nik