JQuery: AJAX внутри другого? умный? - PullRequest
0 голосов
/ 06 ноября 2010

В данный момент у меня есть вызов ajax:

$.ajax({
    url: "misc/sendPM.php",
    type: "POST",
    data: data,

    success: function(stuff) {

        if (typeof stuff == "object") {
            var err = confirm(stuff.error);
            if (err) {
                alert('You pressed OK'); // MAKE AJAX CALL HERE HERE HERE HERE
            } else {
                $("#pmResponse").text("Mottagare saknas!").show().fadeOut(4500);
                $('#sendPM_btn').attr('disabled', false);
                $('#txt').attr('readonly', false);
                $('#title').attr('readonly', false);
            }
        } else {

            $(stuff).prependTo('#PrivateMessages').fadeIn(1000);
            $('#txt').val("");

            $("#pmResponse").text("Skickat!").show().fadeOut(4500);
            $('#sendPM_btn').attr('disabled', false);
            $('#txt').attr('readonly', false);
            $('#title').attr('readonly', false);
        }
    }
});

Я делаю "Вы имели в виду?"Если пользователь не набрал правильное имя для получателя.«Вы имели в виду имя» приходит в подтверждение, поэтому вы можете нажать OK или Отмена ->, чтобы снова ввести новое имя.

Если вы нажмете ОК прямо сейчас, вы получите только предупреждение (см. Код выше).Но то, что я хочу сделать, когда вы нажмете ОК, это изменить имя получателя и отправить обратно те же данные.Это возможно?Как?

Итак, вывод, который я делаю сейчас:

Отправляя запрос к sendPM.php с данными, sendPM.php захватывает данные, и если он находит имя получателя, неясно(например, Megan F), затем он возвращает «ошибку» JSON с: «Вы имели в виду Megan Fox?», $ .ajax при успехе захватывает его и делает его в качестве окна подтверждения.Если вы нажмете OK в окне подтверждения (если вы имели в виду Меган Фокс), , то он должен отправить обратно «Меган Фокс» в sendPM.php вместе со всеми предыдущими данными, чтобы завершить процесс полностью.

Есть ли лучший способ сделать это?

Если нет, как я могу затем отправить обратно "Меган Фокс" в sendPM.php вместе с предыдущими данными, чтобызавершить процесс полностью?

1 Ответ

1 голос
/ 06 ноября 2010

Вместо этого сделайте их функциями.

function sendRequest(data) {
    $.ajax({
        ...
        data: data
        success: process
    });
}

function process(stuff) {
    ...
    if(err && confirm("Did you mean " + stuff.suggestion + "?")) {
        sendRequest([make your new data here]);
    }
    ...        
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...