在带有回调的Javascript类中调用jQuery的问题

问题描述:

我正在使用JavaScript,jQuery和JSONP进行异步跨域WCF服务调用。我已经成功地完成了此功能,所以我知道我遇到的问题不在服务方面。在带有回调的Javascript类中调用jQuery的问题

我有我的测试客户端站点设置为使用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

你有没有尝试把一个断点在的getJSON回调,看看你是否曾经到过“if(result.Success){”line? – jordancpaul 2011-03-02 18:34:48

+0

我不确定是否在该行上放置断点实际上是否会触发,因为该函数被定义为另一个函数调用的参数,但是我确实确认了if(result.Success)行上的断点未触发。 – Ben 2011-03-05 04:20:10

你试过更换:

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

有:

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

谢谢你的建议,杰里米,但这并没有改变任何事情。 – Ben 2011-03-02 18:31:58