【问题标题】:How to parse multiple JSON Objects received from servlet with AJAX如何使用 AJAX 解析从 servlet 接收的多个 JSON 对象
【发布时间】:2017-02-03 12:42:17
【问题描述】:

我知道这已经被问死了,但我的问题与已有的答案有点不同。

我希望在第一个组合框的更改侦听器上更改其他 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 个组合框。

当它只有一个列表时,一切都很好。现在有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 进行调试,但没有!一切都很好。 第一个组合框的值发生变化,但第二个 保持空白/空。不知道为什么!

请放轻松,我是初学者

【问题讨论】:

    标签: jquery json ajax servlets combobox


    【解决方案1】:

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

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

    将其修复为:

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

    【讨论】:

    • 感谢您的宝贵时间。是的,这是你指出的一个小错误。另外,我也在后端做了一些噱头。我以 json 数组格式连接了 2 个字符串,然后在前端将它们拆分为两个不同的数组。它奏效了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 2016-10-15
    相关资源
    最近更新 更多