成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

PHP網(wǎng)站制作之curl來模擬ajax來發(fā)送數(shù)據(jù)

2023-02-20    分類: 網(wǎng)站制作

ajax不管是post還是get傳遞數(shù)據(jù)的時候是什么樣的形式傳遞數(shù)據(jù)呢?
如果我們用curl來模擬ajax來發(fā)送數(shù)據(jù)時候,我們構(gòu)造的$data應(yīng)該是怎樣才是標(biāo)準(zhǔn)的呢?
1、首先最容易想到的是數(shù)組結(jié)果如$data=array('a'=>1,'b'=>2);
2、還會想到j(luò)son數(shù)據(jù)格式如$data=json_encode(array('a'=>1,'b'=>2));
這上面的兩個方式在接收端作了限制后都是不正確的。(大多數(shù)數(shù)據(jù)接口的方式);
標(biāo)準(zhǔn)的傳遞數(shù)據(jù)格式是:a=1&b=2
1.接收數(shù)據(jù)流
functiongetRawData(){
$put=array();
parse_str(file_get_contents('php://input'),$put);
return$put;
}
//實(shí)用函數(shù)
/*獲取與發(fā)送數(shù)據(jù)
*$url獲取路地址
*$postData傳遞數(shù)據(jù)數(shù)組形式
*$isDebug是否調(diào)試打印發(fā)送地址和發(fā)送數(shù)組
*return返回如果是字符則是字串,json格式則返回數(shù)組
*/
functioncurlHttp($url,$postData,$isDebug=false){
$url=strstr($url,'http:')?$url:C('HTTPURL').$url;
if($isDebug){dump($url);dump($postData);}//調(diào)試則輸出發(fā)送的地址和發(fā)送的數(shù)據(jù)串
$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自動構(gòu)造url發(fā)送信息
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一維數(shù)組的如果含json串轉(zhuǎn)為深度轉(zhuǎn)換數(shù)組
*$data一維數(shù)組,鍵值含有json字符串
*return返回一個標(biāo)準(zhǔn)的數(shù)組
**/
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;
}
/*判斷數(shù)據(jù)是否為json數(shù)據(jù)備注:json_decode對于數(shù)組和數(shù)字也會判定為json數(shù)據(jù)需要加上{的判定
*$string字符串
*return返回trueorfalse
**/
functionis_json($string){
$isjsonf=json_decode($string);
$isjsont=strstr($string,'{');
return($isjsonf&&$isjsont)?true:false;
}
前端ajax獲取數(shù)據(jù)

代碼