web前端调用ajax接口,一般使用jquery框架调用,如$.post,$.get,$.ajax等,但是也会遇到很多问题。下面谈谈看。
$.get的范例代码
$.get("/Api/User/userinfo",{uid:a_uid},function(data){
console.log("userinfo.data=",data);
var data=JSON.parse(data);
//获得响应数据后的处理逻辑
});
$.post的范例代码
$.post("/Product/set_new",{pro_id:a_pro_id},function(data){
console.log("Product.set_new.data=",data);
var data=JSON.parse(data);
//获得响应数据后的处理逻辑
});
$.ajax范例代码
$.ajax({
type:"POST", url:"/Api/Platform/register", async: true, traditional:true,
headers:{"Authorization":"Basic <?php echo $headers_authBasic?>","Content-Type":"application/json;charset=UTF-8"},
data:v_data, contentType: "application/json", dataType: "json",
success: function(data){
console.log("index.register.data=",data);//var data=JSON.parse(data);
var json_code=data.code; var json_msg=data.msg;
if(json_code==1){
成功后的处理逻辑
}else{
失败后的处理逻辑
}
}
});
$.ajax的处理比上述$.get,$post多了更多的参数,调用功能实现更加丰富灵活,比如上述代码中的headers参数是在http协议请求头写入参数,比如做一些认证加密处理,这是上面2个函数不能实现的。
可能遇到的问题
问题1:用post方式传递数据的时候,我们用$_POST有时无法接收数据
$.ajax方式调用时,php程序调用接口可能有时$_POST有时无法接收数据,我们抓包处理,发现post的参数数据放在Request Payload中(调试了很久才发现,这里要注意),如下图:
所以我们要做一些特别处理,代码如下:
$username=$_POST['username'];
//如果$POST方式无法获得数据,通过php 获取post方法payload(json)形式参数的方法
if(empty($username)){
$request_body = file_get_contents('php://input');
$data = json_decode($request_body, true);
$username=$data['username'];
}
本文持续改进完善...