2010-08-07 108 views
2

IMO我按照這裏的教程Googles x-siteGWT JSON跨站點請求失敗

/** 
    * Make call to remote server. 
    */ 
    public native static void getJson(int requestId, String url, 
     StockWatcher handler) /*-{ 
    var callback = "callback" + requestId; 

    // [1] Create a script element. 
    var script = document.createElement("script"); 
    script.setAttribute("src", url+callback); 
    script.setAttribute("type", "text/javascript"); 

    // [2] Define the callback function on the window object. 
    window[callback] = function(jsonObj) { 
    // [3] 
    [email protected]::handleJsonResponse(Lcom/google/gwt/core/client/JavaScriptObject;)(jsonObj); 
    window[callback + "done"] = true; 
    } 

    // [4] JSON download has 1-second timeout. 
    setTimeout(function() { 
    if (!window[callback + "done"]) { 
     [email protected]::handleJsonResponse(Lcom/google/gwt/core/client/JavaScriptObject;)(null); 
    } 

    // [5] Cleanup. Remove script and callback elements. 
    document.body.removeChild(script); 
    delete window[callback]; 
    delete window[callback + "done"]; 
    }, 1000); 

    // [6] Attach the script element to the document body. 
    document.body.appendChild(script); 
    }-*/; 

但它一直沒有我..所有其他methos也被寫入一切正常..我只是可以理解爲什麼它告訴我每一個「無法檢索JSON」時間(這是說,當處理程序的輸入爲null)

順便說一句我說的是在谷歌網站

回答

3

我「3.從遠程服務器請求數據」 'd建議使用JsonpRequestBuilder,而不是所有這些JSNI代碼 - 沒有JSNI代碼(可能只是一些覆蓋類型),更容易調試等。

String url = "http://www.google.com/calendar/feeds/[email protected]/public/full" + 
    "?alt=json-in-script"; 
JsonpRequestBuilder jsonp = new JsonpRequestBuilder(); // No JSNI! 
jsonp.requestObject(url, 
    new AsyncCallback<Feed>() { // Type-safe! 
     public void onFailure(Throwable throwable) { 
     // Easy to debug! (hopefully) 
     } 

     public void onSuccess(Feed feed) { 
     // Success! 
     } 
     } 
    }); 
+0

我試過了。 它工作的靜態文件,但在動態json文件的情況下,它總是失敗。 有什麼想法? – user365314 2010-08-09 07:15:36

+0

您*負責在服務器端生成JSON文件嗎?那麼也許這是一個錯誤:D(沒有進攻;))無論哪種方式,嘗試通過瀏覽器或wget下載動態和靜態文件,並比較和驗證它們:http://www.jsonlint.com/是一個很棒的JSON驗證器。另外:「它總是失敗」 - 你能更具體地說明它是如何「失敗」的? :d – 2010-08-09 09:43:47