/ / Odkazovanie na objekt JSON vytvorený v jazyku Java prostredníctvom javascriptu na jednej stránke JSP - java, jquery, json, highcharts

Odkazovanie na objekt JSON vytvorený v jazyku Java prostredníctvom javascriptu na jednej stránke JSP - java, jquery, json, highcharts

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ď č. 1

Odporúč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.