普通jQuery的Ajax请求代码如下:
$.ajax({
type: 'POST',
url: "http://xxx/yyy/zzz/sendVerifyCode",
data:{
phoneNo:$(".tel").val()
},
success: function(data){
$.toast("发送成功", "text")
},
error: function(){
$.toast("发送失败", "text")
}
})
一、如果POST接口返回500,请求的参数如下图,图中的传参方式为Form data:
1.需要加上contentType:'application/json',传参方式会变为Request Payload(装载量)。
2.需要加上JSON.stringify封装对象,这个问题在传递一个多键值对的对象会出现,如果是只有一个key-value的键值对则可加可不加。
代码示例如下:
$.ajax({
type: 'POST',
url: "http://xxx/yyy/zzz/register",
data: JSON.stringify({
username:$(".tel").val(),
smsVerifyCode:$('.captchaVal').val(),
realName:$('.username').val(),
email:$('.email').val(),
password:$(".pwd").val(),
}),
contentType:'application/json',
success: function(data){
if(data.code===200){
$.toast("注册成功", "text")
setTimeout(function () {
location.href = "login.html"
}, 500);
}else {
$.toast(data.message, "text")
}
},
error: function(){
$.toast("注册失败", "text")
},
dataType: "json",
})
然后请求变为了对象格式。
HTTP两种传参方式的区别:
Form Data:当POST请求的请求头里设置Content-Type: application/x-www-form-urlencoded(默认),参数在请求体以标准的Form Data的形式提交,以&符号拼接,参数格式为key=value&key=value&key=value。
Request Payload:当使用AJAX原生POST请求,请求头里设置Content-Type:application/json,请求的参数会显示在Request Payload中,参数格式为JSON格式:{“key”:”value”,”key”:”value”…},这种方式可读性会更好。
二、使用Ajax发送请求时返回Canceled,未请求到接口,则需加上async:false即可解决。