2010-08-07 5 views
2

imo je l'ai fait tout selon le tutoriel ici Googles x-siteGWT demande intersite JSON ne

/** 
    * 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); 
    }-*/; 

mais il continue à me .. tous les autres ne methos sont également écrits .. Je ne peux comprendre pourquoi il me dit chaque fois que « Impossible de récupérer JSON » (il indique que lorsque l'entrée de gestionnaire est null)

BTW je parle de la « 3. Demander les données du serveur distant » sur le site googles

Répondre

3

I suggérerait d'utiliser JsonpRequestBuilder, au lieu de tout cela Code JSNI - pas de code JSNI (peut-être juste quelques types de superposition), plus facile à déboguer, etc.

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

Je l'ai essayé. pour les fichiers statiques cela a fonctionné, mais dans le cas d'un fichier json dynamique, il a toujours échoué. des idées? – user365314

+0

Est-ce que * vous * êtes responsable de la génération des fichiers JSON côté serveur? Alors peut-être que c'est un bug: D (pas d'offense;)) Quoi qu'il en soit, essayez de télécharger les fichiers dynamiques et statiques via browser ou wget et comparez-les: http://www.jsonlint.com/ est un excellent validateur JSON. Aussi: "ça a toujours échoué" - pourriez-vous être plus précis quant à la façon dont "échoué"? :RÉ –

Questions connexes