![](/img/trans.png)
[英]how to return multiple json objects from java servlet using one ajax request
[英]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.