ajax请求总结–普通请求与跨域请求
ajax普通请求
前端格式:
$(function() {
var url = "/function/tree/testRequestData";
$.ajax({
type: "GET",
url: url,
data: {
},
dataType:"json",
success: function(data) {
initThisZtree(data);
},
error:function(){
}
});
});
后台:后台是普通的controller,方法上带@ResponseBody,会直接返回json
ajax请求之跨域请求
前端格式:
$.ajax({
type: "GET",
url: "/function/wf/requestData",
async:false,
data:{"devId":devid},
dataType: "jsonp",
jsonp:"callback",
success: function(data){
linkids = data.ids;
hids = data.hids;
iybs = data.iybs;
jybs = data.jybs;
keyids = data.keyids;
groups = data.groups;
gids = data.gids;
posSide = 2*parseInt(data.posSide);
//解析后端传过来的数据
centerId0 = data.centerIed;
centerName0 = data.centerName;
hardYbs0 = data.hardYbs;
groups = data.groups;
xdz = new XDZ(data.centerIed,data.centerName,data.hardYbs,data.groupList);
},
error:function(data){
alert("ajax请求错误");
return ;
}
重点与普通ajax请求的差异:
dataType: "jsonp",
jsonp:"callback",
后台:因为返回是jsonp格式,所以后台返回有差异
@RequestMapping(value="/requestData")
public void ajaxJsonData(HttpServletRequest request,HttpServletResponse response,@RequestParam("devId") String iedId){
String jsonString = xuduanZi(iedId);
String callback = request.getParameter("callback");
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
PrintWriter writer = null;
try {
writer = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
writer.print(callback + "("+jsonString+")");
System.out.println("jsonString"+jsonString);
}
对象转换为json字符串:
依赖jar包:
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
json = JSONObject.fromObject(result).toString();