У меня есть этот кусок кодаAjax не выполняется асинхронно
function getMesssages(id,c) {
function waitForServerCall(id,c) {
$.get(href("~/polling/" + id), function (response) {
var r = c(response);
if (r) {
return false;
}
waitForServerCall(id);
});
}
waitForServerCall(id,c);
$.post(href("~/batch/export/?batches=3344&pollid=" + id), function (response) {
c(response);
cancelCall = true;
});
}
$.get внутри метода waitForServerCall
получить только выполнить, когда $.post Получать ответ сервера. Зачем?
Это является ajaxSettings:
accepts: Object
async: true
contentType: "application/x-www-form-urlencoded; charset=UTF-8"
contents: Object
converters: Object
flatOptions: Object
global: true
isLocal: false
jsonp: "callback"
jsonpCallback:()
processData: true
responseFields: Object
type: "GET"
url: "http://localhost:59161/"
xhr: In()
__proto__: Object
Update. То, что я делаю, является длинным опросом, запрос на отправку является длительным процессом, поэтому мне нужно знать некоторые события, которые запускает сервер, метод waitForServerCall уведомляет клиента о произошедших событиях. Но поскольку метод $ .get выполняется после восстановления ответа $ .post, процесс уведомления не работает.
Обновление 1: Я использую .NET 4.0 и JQuery 1.9.1.
Да, запрос $ .get получает выполнение сначала, но не ответ возвращается, пока $ .post не получит ответ. Как только $ .post получит ответ, $ .get выполнит правильно. Но я ожидаю, что $ .get получит ответ сервера, даже если $ .post еще не получил ответа.
Пожалуйста, опишите, какое поведение вы пытаетесь достичь. Вы пытаетесь описать проблему, но не говорите, как вы хотите, чтобы она работала. Кроме того, кажется, что у вас есть ошибка после вызова 'waitForServerCall (id);' потому что вы не передаете второй аргумент. – jfriend00
Откуда вы знаете? Описанные симптомы не имеют смысла. Звучит скорее как случай кода, который делает то, что написано, но не то, что вы ожидали – charlietfl
Прочтите обновление, пожалуйста, – Misters