簡體   English   中英

在一個JSP頁面中引用通過javascript用Java創建的JSON對象

[英]Referencing a JSON object created in Java through javascript in the one JSP page

如何在Java中創建JSON對象,然后在同一jsp頁面中通過javascript引用該對象?

我正在做的是-訪問postgresql數據庫-運行sql查詢並返回結果集-將結果集轉換為JSON對象

這一切都很好,因為當我在此階段打印出JSON對象時,它可以工作。

然后,我去使用該JSON對象輸入Highchart。 我正在嘗試使用$ .getJson,但一直在說我的JSON對象未定義! 我知道getjson需要一個url,但是我嘗試訪問JSON對象的任何其他方式也都無效。 任何幫助將非常感激。

//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>

我建議使用一個處理Java內容的servlet,並擺脫JSP中的Java代碼。 現在就這樣做,因為最終您的單個JSP已經成長為完整的產品,然后更改任何內容為時已晚,因為這會花費很多錢。

問題是,JavaScript代碼無法看到您的Java代碼。 JavaScript代碼無法訪問json變量。

創建一個處理查詢等的servlet,並返回一個JSON字符串,然后您的JSP可以讀取它。

您正在使用的Json變量在Java作用域而不是javascript作用域中; 為了使用創建的內容,您應該輸出以下內容

System.out.println(“ var json ='” + json +“';”);

這樣,該對象將成為整個頁面可用的javascript對象,您可以在腳本中使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM