Попытка смоделировать ответ Ajax в JQuery - PullRequest
0 голосов
/ 02 сентября 2011

Я пытаюсь использовать jsFiddle для имитации ответа ajax, но получаю неопределенное значение.Кто-нибудь знает как это сделать?Моя скрипка здесь:

http://jsfiddle.net/heaversm/v75vN/10/

и, чтобы увидеть проблему, нажмите «Войти» в окне результатов

Ответы [ 2 ]

1 голос
/ 02 сентября 2011

Ваше уведомление отправляется до того, как запрос Ajax будет выполнен. Вам нужно передать обратный вызов updateUser, чтобы установить loginResult:

updateUser: function(cidVal,aidVal,sidVal,surveyVal, onSuccess){
    $.ajax({
        url: wsURL,
        type: 'POST',

        //data: { Function: "UpdateConsumer", ConsumerId: cidVal, ActivityId: aidVal, SurveyId: sidVal, Survey: surveyVal }
        //Sample XML Data for the Purpose of Testing in JS Fiddle:
        data: { xml: '<UpdateConsumer><Status>OK</Status></UpdateConsumer>' },
        success: function(data) {
            if (onSuccess) {
                onSuccess(data);
            }
        },
        error: function(data){
            //Error in data or unable to connect
            return ("error");
        },
        dataType: "xml" //We're expecting XML back from the server
    });

Тогда назовите это:

loginResult = c.loginUser(cid,mid,survey, function (result) { alert(result); } );
1 голос
/ 02 сентября 2011

Вы возвращаетесь из обратных вызовов $.ajax (success и error).Поскольку метод $.ajax предоставляет вам перехватчики обратного вызова, вы должны предоставить то же самое в функции loginUser

loginUser: function(cidVal, midVal, surveyVal, callback) {

    $.ajax({
        // ...
        success: function(data) { callback(true); },
        error: function(data){ callback(false);},
    });
}

, а затем использовать этот обратный вызов, чтобы узнать, когда операция завершится:

loginUser('foo', 'bar', 'far', function (result) {
    alert(result);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...