我正在使用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回調永遠不會到達。任何建議將不勝感激。
由於提前,
本
你有沒有嘗試把一個斷點在的getJSON回調,看看你是否曾經到過「if(result.Success){」line? – jordancpaul 2011-03-02 18:34:48
我不確定是否在該行上放置斷點實際上是否會觸發,因爲該函數被定義爲另一個函數調用的參數,但是我確實確認了if(result.Success)行上的斷點未觸發。 – Ben 2011-03-05 04:20:10