2017-02-03 8 views
0

Я знаю, что это было предсказано до смерти, но моя проблема немного отличается от уже доступных ответов.Как разобрать несколько объектов JSON, полученных из сервлета с помощью AJAX

Я хочу изменить значение 2 других выпадающих списков на слушателе изменений первого списка. Это происходило гладко, когда было всего 1 combobox/dropdown. Но теперь разделение или разбор данных не происходит для второго combobox.

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); 

Это мой код сервлета на бэкэнд. Я поместил слушателя изменений в 1-ое поле со списком, которое дает мне значение категории. Основываясь на этом значении, я вызывал другой набор значений (я проверял, значения идут должным образом), что я имею в виду в 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, но нет! все было хорошо. Величина первой комбинации значений, но вторая остается пустой/нулевой. Не знаю, почему!

Пожалуйста, полегче на меня, я новичок

ответ

0

Он похож на Javascript переменной station, которые вы заполняете с данными JSON не то, что вы итерацию в each() вызова:

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

Fix это:

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

Спасибо за ваше время. Да, это небольшая ошибка, которую вы указали. Кроме того, я сделал некоторые трюки и на заднем конце. Я конкатенировал 2 строки в формате json array, а затем на переднем конце я разделил их на два разных массива. И это сработало :) – Vishal