我接触ajax很长时间了,老对手。相信很多刚刚入门的都会入坑,前端传数据后台老是接收不到,或者相反。
今天,我也特意来总结一下,ajax取值和传值格式。
先看看两个ajax写法
第一个、后台接收参数 @RequestParam,传参就是data:data,
这种传参是这样的
data: {"orderId":orderId,"commant":commant}
data: "orderId=" + orderId + "&commant=" + commant
甚至可以不写data,直接写在url的后面
var data = {
app:$('input[name="app"]').val()
};
$.ajax({
type:'GET',
url:'controller/**',
data:data,
dataType:'json',
async:false,
success:function (data) {
if(data.result=="success"){
}
},
error:function (err) {
return false;
}
});
第二个 、后台参数是@RequestBody,传参需要将对象转换成json字符串:data:JSON.stringify(json),
var data = { app:$('input[name="app"]').val()
};
$.ajax({
type:'POST',
url:'controller/**',
data:JSON.stringify(data),
dataType:'json',
contentType:"application/json",
success:function (data) {
if(data.result == "success"){
}else{
}
},
error:function (err) {
return false;
}
});
注意,这个地方不是对象,是json字符串。这样,在后台就可以直接注入到对象中。当你需要向后台提交一组对象时时,json字符串的好处就体现出来了(对象数组)。一般都是用post方法传递参数。
data:formData //网上有很多资料
补充:关于文件上传跨域问题,使用原始的表单submit的方式就可以
eg:点击按钮,请求后台,提交
<form id='addForm' action='**.action' type='post'> <label for='uname'>用户名</label>:<input type='text' name='uname' id='uname'><br> <label for='mobileIpt'>手机号:</label><input type='text' name='mobileIpt' id='mobileIpt'><br> <input type='button' value='提交' onclick='addUser()'> </form>
总结:
data传什么数据类型,主要看后台需要什么类型的数据(对象还是字符串)。