2010-08-07 4 views
2

IMO 내가 모든 것을 여기에 튜토리얼 다른 모든 Methos는도 작성됩니다 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]ent.StockWatcher::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); 
    }-*/; 

하지만 나를 실패 계속 ..에 따라했다가 나에게 말한다 왜 .. 난 그냥 이해할 수 "JSON을 검색 할 수 없습니다"라는 때마다 BTW

난이 (가) 구글 사이트

답변

3

I의 "3. 원격 서버로부터 데이터를 요청"에 대해 이야기하고 (이것은 핸들러의 입력이 null 때 알려줍니다) 이 대신에 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

+0

* 서버 측에서 JSON 파일을 생성해야합니까? 어쨌든 그것은 버그 일 것입니다 : D (no offense;) 어느 쪽이든, 브라우저 또는 wget을 통해 동적 및 정적 파일을 다운로드하고 비교 및 ​​검증하십시오 : http://www.jsonlint.com/은 훌륭한 JSON 유효성 검사기입니다. 또한 : "항상 실패했습니다"- 어떻게 실패했는지 구체적으로 설명 할 수 있습니까? :디 –