Javascript 中ajax实现前台向后台交互
第一种情况:前台传入字符串参数 后台返回json字符串、或是json数组
代码如下:
前台:
$.ajax({ url: "xxx/xxx.action", data: "id=xxx", cache: false, async: false, success: function(result) { A:接收后台返回的数组 var data = eval(result); if (typeof(data) != "undefined" && data.length > 0) { for(var i=0;i<data.length;i++) { data[i]["id"]; data[i]["name"]; } } B: 后台返回字符串、则直接接收 }, error: function(){ alert("table loading error..."); } });
后台:
PrintWriter out = ServletActionContext.getResponse().getWriter(); /* 后台返回json字符串*/
StringBuffer string = new StringBuffer();
string.append(""); out.print(string);
/* * 后台返回json数组 */
List<String> list = new ArrayList<String>();
JSONArray jArray = JSONArray.fromObject(list);
out.print(jArray); out.flush();
return null;
第二种情况:前台传入json数组作为参数与后台进行交互
前台:
function delCheckedData(){ var array = new Array(); $(":checkbox[name='chk'][checked=true]").each(function(){ array.push({ id: $(this).val() }); }) if (array.length > 0) { var gridJSON = JSON.stringify(array, function(key, value){ return value; }); $.ajax({ url: "/xxx/xxx.action", cache: false, data: "idListJSON=" + gridJSON, async: false, success: function(result){ var instData = eval(result); //相应的处理 }, error: function(){ alert("Error..."); } }); } }
后台:
JSONArray instArray = JSONArray.fromObject("参数"); for (int i = 0; i < instArray.size(); i++) { JSONObject instJ = (JSONObject)instArray.get(i); String sId = instJ.get("id").toString(); //得到Id做相应的操作 }
打铁还需自身硬