Ako môžem vytvoriť objekt JSON v jave a potom odkazovať na tento objekt cez javascript na rovnakej stránke jsp?
To, čo robím, je - Prístup k databáze postgresql - Spúšťanie dotazu SQL a vrátenie sady výsledkov - Prevod výsledkovej množiny na objekt JSON
Všetko to funguje dobre, pretože keď tlačím objekt JSON v tejto fáze, funguje to.
Potom som začal používať tento objekt JSON, do ktorého sa pridáHighchart. Snažím sa použiť $ .getJson, ale stále hovorí, že môj objekt JSON nie je definovaný! Viem, že getjson očakáva url, ale iný spôsob, akým som sa pokúsil získať prístup k objektu JSON, ani nepracoval. Akákoľvek pomoc by bola veľmi cenená.
//Do imports
//connect to database
//sql query
<%
JSONArray json = new JSONArray();
java.sql.ResultSetMetaData rsmd = rs.getMetaData();
while( rs.next() ){
int numColumns = rsmd.getColumnCount();
JSONObject obj = new JSONObject();
//convert to JSON
json.put(obj);
}
//test JSON
System.out.println(json);
%>
<script>
$(function () {
$.getJSON(json, function(data) {
options.series[0].data = data;
});
$("#container").highcharts({
//make up chart
//try load json into chart
series: [{
name: "Tokyo",
data: data
}]
});
});
</script>
odpovede:
0 pre odpoveď č. 1Odporúčam vám použiť servlet, ktorý sa zaoberávaše Java látky a zbavte sa kódu Java vo vašich JSP. Urobte to teraz, pretože nakoniec váš jediný JSP sa rozrástol do plného produktu a potom je príliš neskoro na to, aby nič zmenilo, pretože to by stálo peniaze.
Problém je v tom, že váš kód Java nemôže byť viditeľný pomocou kódu JavaScript. Kód JavaScript nemôže mať prístup k premennej json.
Vytvorte servlet, ktorý spracováva vaše otázky a tak ďalej a vráti reťazec JSON, ktorý potom môže čítať váš JSP.
0 pre odpoveď č. 2
Premenná Json, ktorú používate, je v rozsahu java a nie v rozsahu javascript; aby ste mohli použiť vytvorený obsah, mali by ste vyhotoviť nasledujúce
System.out.println ("var json =" "+ json +" ";");
Týmto spôsobom objekt bude objekt javascript dostupný pre celú stránku a môžete ho použiť vo vašom skripte.