AJAX не синхронно - PullRequest
       0

AJAX не синхронно

0 голосов
/ 04 августа 2011

У меня есть проблема, похожая на этот вопрос: Javascript и AJAX, работает только при использовании alert ()

У меня есть вызов AJAX для обновления поля в базе данныхпри завершении формы.Тем не менее, кажется, что вызов не достигает контроллера.Когда я помещаю предупреждение, это работает.В настоящее время я настроил его синхронно из-за проблемы, но даже тогда, без предупреждения, он достигает контроллера только примерно 1 раз в 5 или 6 раз.Это бит AJAX:

function finalize() {
    if (!confirm("Are you sure?"))
        return;

    $("#finalizebutton").attr('disabled', 'disabled');

    var request = new XMLHttpRequest();
    var url = "/Operation/Finalize/";
    request.open("GET", url, false);
    request.send();

    $("#otherformstuff").attr('disabled', 'disabled'); //a few disable calls
}

На стороне управления у меня примерно:

public ActionResult Finalize()
{
    db.setfinalized(true);   //breakpoint here that only gets hit about 1 in 5 tests
    return Content("Finalized");
}

Даже когда туда вставлено предупреждение, оно иногда не работает.Как ни странно, я поставил предупреждение для request.responseText, и он дал мне ответ от элемента управления, когда элемент управления фактически не обрабатывал его ... Любые мысли по этому поводу приветствуются.

1 Ответ

1 голос
/ 04 августа 2011

Поскольку вы говорите, что это синхронно.

Ваша проблема с этой строкой:

request.open("GET", url, false);

Метод open принимает 3 аргумента.Метод, url, а третий - логическое значение, указывающее, должен ли запрос быть асинхронным.

Просто измените false на true, и запрос будет асинхронным.

request.open("GET", url, true);

Но вы также можете просто заменить весь этот блок кода XHR этой строкой ..

$.get('/Operation/Finalize/');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...