ajax不管是post还是get传递数据的时候是什么样的形式传递数据呢?
如果我们用curl来模拟ajax来发送数据时候,我们构造的$data应该是怎样才是标准的呢?
1、首先最容易想到的是数组结果如$data=array('a'=>1,'b'=>2);
2、还会想到json数据格式如$data=json_encode(array('a'=>1,'b'=>2));
这上面的两个方式在接收端作了限制后都是不正确的。(大多数数据接口的方式);
标准的传递数据格式是:a=1&b=2
1.接收数据流
functiongetRawData(){
$put=array();
parse_str(file_get_contents('php://input'),$put);
return$put;
}
//实用函数
/*获取与发送数据
*$url获取路地址
*$postData传递数据数组形式
*$isDebug是否调试打印发送地址和发送数组
*return返回如果是字符则是字串,json格式则返回数组
*/
functioncurlHttp($url,$postData,$isDebug=false){
$url=strstr($url,'http:')?$url:C('HTTPURL').$url;
if($isDebug){dump($url);dump($postData);}//调试则输出发送的地址和发送的数据串
$ch=curl_init();//初始化
//$header=array('Expect:');
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($ch,CURLOPT_HEADER,0);//是否取得头信息
curl_setopt($ch,CURLOPT_POST,true);//post提交方式
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($postData));//http_build_query自动构造url发送信息
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,20);//20秒连接超时
//curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
$data=curl_exec($ch);
$toArray=json_decode($data,true);
if(is_array($toArray)){
$data=listToArray($toArray);
}
return$data;
}
/*对curlHttp返回的list一维数组的如果含json串转为深度转换数组
*$data一维数组,键值含有json字符串
*return返回一个标准的数组
**/
functionlistToArray($data){
$arr=array();
foreach($dataas$k=>$v){
if(is_json($v)){
$arr[$k]=listToArray(json_decode($v,true));
}elseif(is_array($v)){
$arr[$k]=listToArray($v);
}else{
$arr[$k]=$v;
}
}
return$arr;
}
/*判断数据是否为json数据备注:json_decode对于数组和数字也会判定为json数据需要加上{的判定
*$string字符串
*return返回trueorfalse
**/
functionis_json($string){
$isjsonf=json_decode($string);
$isjsont=strstr($string,'{');
return($isjsonf&&$isjsont)?true:false;
}
前端ajax获取数据
<script>
$.ajax({
url:"api接口地址",
type:'POST',//参数方式
dataType:"json",//数据类型
data:{"action":1,"OrderID":"112-2316089-0269002","MD5Key":"55E9D105D116DBEC3E8285EB0F5C6404"'},
success:function(val){
console.log(val);
},error:function(){
alert('error');
}
})
网页标题:PHP网站制作之curl来模拟ajax来发送数据
分享网址:https://www.cdcxhl.com/news21/238421.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有网站制作等
广告
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源:
创新互联