如何將jsonObj從getJson中的javascript代碼傳遞給java代碼handleJsonResponse。如果我的語法正確,我該如何處理JavaScriptObject?
我知道jsonObj包含有效的數據,因爲alert(jsonObj.ResultSet.totalResultsAvailable)返回一個很大的數字:) ---但是有些它沒有正確地傳遞迴Java。在GWT中調試JSON(跨服務器)
編輯:我解決了它...通過將jsonObj.ResultSet.Result傳遞給java函數並使用JSONArray對其進行處理。
謝謝。
public native static void getJson(int requestId, String url, MyClass handler) /*-{
alert(url);
var callback = "callback" + requestId;
var script = document.createElement("script");
script.setAttribute("src", url+callback);
script.setAttribute("type", "text/javascript");
window[callback] = function(jsonObj) { // jsonObj DOES contain data
[email protected]::handleJsonResponse(Lcom/google/gwt/core/client/JavaScriptObject;)(jsonObj);
window[callback + "done"] = true;
}
document.body.appendChild(script);
}-*/;
public void handleJsonResponse(JavaScriptObject jso) { // How to utilize JSO
if (jso == null) { // Now the code gets past here
Window.alert("Couldn't retrieve JSON");
return;
}
Window.alert(jso.toSource()); // Alerts 'null'
JSONArray array = new JSONArray(jso);
//Window.alert(""+array.size());
}
}