Проблема с вызовами jQuery в классе Javascript с обратными вызовами - PullRequest
1 голос
/ 02 марта 2011

Я использую JavaScript, jQuery и JSONP для выполнения асинхронных междоменных вызовов службы WCF. Эта функция успешно работает, поэтому я знаю, что проблема, с которой я сталкиваюсь, не связана с обслуживанием.

Мой тестовый клиентский сайт был настроен для выполнения встроенных вызовов jQuery с использованием метода getJSON, и он работал нормально. Однако затем я попытался принять вызовы jQuery и поместить их в класс JavaScript. Теперь у меня возникли проблемы с переадресацией вызовов.

Это отлично работает (функции в рабочем примере добавляются в теги скрипта на самой странице):

function handleResponse(result) {
    if (result.Success) {
        // do something
    }
    else {
        // do something else
    }
}

function validate(serviceURL, data) {
    $.getJSON(serviceURL + "/Validate?data=" + data + "&callbackHandler=?", handleResponse);
}

Когда я попытался создать класс, чтобы обернуть эту функцию в отдельный файл включения .js, обратные вызовы не запускаются. Вот код класса из файла включения .js:

function serviceProxy(myServiceURL) {
    this.serviceURL = myServiceURL;

    this.validate = function(data, successCallback, failureCallback) {
        $.getJSON(this.serviceURL + "/Validate?data=" + data + "&callbackHandler=?", function(result) {
            if (result.Success) {
                successCallback();
            }
            else {
                failureCallback(result.ErrorMessage);
            }
        });
    };

А вот код JavaScript, который написан в тегах сценария непосредственно на странице для выполнения вызовов:

function handleSuccess() {
    // do something
}

function handleFailure(message) {
    // do something else
}

function validate(serviceURL, data) {
    var proxy = new serviceProxy(serviceURL);
    proxy.validate(data, handleSuccess, handleFailure);
}

При отладке выполняется вызов getJSON, но обратные вызовы handleSuccess и handleFailure не достигаются. Любой совет будет принята с благодарностью.

Заранее спасибо,

Ben

1 Ответ

0 голосов
/ 02 марта 2011

Вы пробовали заменить:

if (result.Success) {
            successCallback();
    }

на:

if (result.Success) {
            successCallback(result);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...