如何使用AJAX解析从servlet接收的多个JSON对象

时间:2017-02-03 12:42:18

标签: jquery json ajax servlets combobox

我知道这已被要求死亡,但我的问题与已有的答案有所不同。

我希望在第一个组合框的更改侦听器上更改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进行调试,但不是!一切都很好。 第一个组合框的值会发生变化,但第二个组合会保持空白/空白。不知道为什么!

请放轻松我,我是初学者

1 个答案:

答案 0 :(得分:0)

您使用JSON数据填充的Javascript变量station看起来不是您在each()调用中迭代的内容:

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

将其修复为:

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