簡體   English   中英

如何使用AJAX解析從Servlet接收的多個JSON對象

[英]How to parse multiple JSON Objects received from servlet with AJAX

我知道這已經被要求死了,但是我的問題與已有的答案有些不同。

我希望在第一個組合框的更改偵聽器上更改其他2個組合框的值。 當組合框/下拉列表只有1個時,這種情況順利進行。 但是現在,第二個組合框不再發生數據的分離或解析。

categoryValue = req.getParameter("bellCategorySel");

List<String> paramList = insightDbConn.getParametersList(categoryValue);                
List<String> testStationList = insightDbConn.getTestStationsFromTestRecords(categoryValue);

String parsedParamList = new Gson().toJson(paramList);
String parsedtestStationList = new Gson().toJson(testStationList);

PrintWriter out = resp.getWriter();
JSONObject json = new JSONObject();
json.put("parameters", parsedParamList);
json.put("teststations", parsedtestStationList);
out.print(json);

這是我在后端的Servlet代碼。 我在第一個組合框上放置了一個更改監聽器,該監聽器為我提供了類別值。 基於這個值,我一直在調用其他要設置的值(我已經驗證,值可以正確輸入),這意味着我要放入其他兩個組合框。

當只是一個列表時,一切都很好。 現在有2。

以下是我的前端代碼,用於解析AJAX信息:

$("#bellCategorySel").change(function(e) {      
    $.ajax({
            type : 'POST',
            cache : false,
            data : {
                frmSubmit : 'ajax',
                bellCategorySel : document.getElementById("bellCategorySel").value,
            },
            dataType: 'json',
            url : '/AnalysisPanel/gaussianbell',
            success : function(jsonResponse) {                      
                var arr = JSON.parse(jsonResponse.parameters),
                opts = '';
                   $.each(arr, function(key, val){
                       opts += '<option value="' + val + '">' + val + '</option>';
                   });
                   $('#bellParameterSel').empty().append(opts)

                 var stations = JSON.parse(jsonResponse.teststations),  
                 stns = '';
                   $.each(stns, function(key, val){
                       stns += '<option value="' + val + '">' + val + '</option>';
                   });
                   $('#testStation').empty().append(stns)
            }
        });
        e.preventDefault();
         return false;
});

嘗試使用Chrome進行調試,但沒有! 一切都很好。 第一個組合框的值更改,但是第二個組合框保持空白/ null 不知道為什么!

請放心我我是初學者

看起來您用JSON數據填充的Javascript變量station不是您在each()調用中迭代的內容:

             var stations = JSON.parse(jsonResponse.teststations),  
             stns = '';
               $.each(stns, function(key, val){

修正為:

               $.each(stations, function(key, val){

暫無
暫無

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

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