2011-03-02 67 views
1

我正在使用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

回答

0

你試過更換:

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

有:

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

謝謝你的建議,傑里米,但這並沒有改變任何事情。 – Ben 2011-03-02 18:31:58