我正在使用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回调。任何建议都将不胜感激。
提前致谢,
本
答案 0 :(得分:0)
您是否尝试过更换:
if (result.Success) {
successCallback();
}
使用:
if (result.Success) {
successCallback(result);
}