Я использую 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