我使用 JavaScript、jQuery 和 JSONP 进行异步、跨域 WCF 服务调用。我已经成功地使用了此功能,因此我知道我遇到的问题不在服务端。
我将测试客户端站点设置为使用 getJSON 方法进行内联 jQuery 调用,并且工作正常。然而,我随后尝试接受 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 回调。任何建议将不胜感激。
提前致谢,
本
最佳答案
您是否尝试过替换:
if (result.Success) {
successCallback();
}
与:
if (result.Success) {
successCallback(result);
}
关于javascript - 带有回调的 Javascript 类中的 jQuery 调用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5170845/