我在前端以json格式从Servlet接收Java字符串列表。简而言之,我希望根据来自另一个Dropbox的选择填充一个选择而不刷新页面。
即。如果用户从第一个选择菜单中选择一个类别,它会在数据库中触发查询以选择与该类别相关的所有参数,然后填充另一个选择框。我打算在没有页面刷新的情况下这样做。
以下是我的java代码:
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String categoryValue = req.getParameter("bellCategorySel");
List<String> paramList = insightDbConn.getParametersList(categoryValue);
String parsedParamList = new Gson().toJson(paramList);
PrintWriter out= resp.getWriter();
JSONObject json = new JSONObject();
json.put("name", parsedParamList);
out.print(json);
}
我在select菜单的“onchange”事件中调用此Java代码。
下面是我的jQuery ajax代码:
$("#bellCategorySel").change(function(e) {
$.ajax({
type : 'POST',
cache : false,
data : {
bellCategorySel : document.getElementById("bellCategorySel").value
},
dataType: 'json',
url : '/AnalysisPanel/gaussianbell',
success : function(jsonResponse) {
var name = $.parseJSON(jsonResponse.name);
var tostr = name.toString();
var commsep = tostr.split(",");
alert(commsep);
}
});
e.preventDefault();
return false;
});
});
现在问题是我收到以下格式的字符串:
["a", "b", "c"]
当我解析它时,它变为:
a,b,c
我无法根据逗号分隔符拆分字符串,以便我可以根据逗号分隔后得到的数组填充第二个选择菜单。
我对这些东西不熟悉,所以请放轻松我:)
答案 0 :(得分:1)
正如我在评论中提到的那样:
dueDate
会自动为您执行此操作。使用这种方式:
dataType:"json"
success : function(jsonResponse) {
var arr = jsonResponse.name, // <-----the array ["a", "b", "c"]
opts = '<option value="0">Please select...</option>'; // <---default option
$.each(arr, function(key, val){
opts += '<option value="' + val + '">' + val + '</option>'; //<----generate options
});
$('#targetSelectElement').empty().append(opts); //<-----put the options in select element.
}
var arr = ["a", "b", "c"], // <-----the array ["a", "b", "c"]
opts = '<option value="0">Please select...</option>'; // <---default option
$.each(arr, function(key, val) {
opts += '<option value="' + val + '">' + val + '</option>'; //<----generate options
});
$('#myselect').empty().append(opts); //<-----put the options in select element.
答案 1 :(得分:0)
当您获得引用Array的json对象时,您应该能够遍历数组而不是将其用作字符串并根据逗号进行拆分
答案 2 :(得分:0)
你也可以使用split来用逗号分割字符串,如下所示:
var array = string.split(',');
答案 3 :(得分:0)
只需获取初始数组并将其直接解析为FragmentTransaction ft = fragmentManager.beginTransaction();
//ft.detach(fragment).attach(fragment).commitAllowingStateLoss(); // crashing
ft.replace(getView().getId(), fragment).commitAllowingStateLoss(); // not crashing
的
<option>
答案 4 :(得分:0)
var res = "a,b,c".split(",");
console.log(res);