‘壹’ thinkphp后台发送的json,前台的js里怎么接收
如果你会用jquery,那我还可以帮到你。jquery里面有很多种ajax的方法,我举个简单的$.post方法,这是用ajax提交数据,提交数据的形式是post。
$.post('index.php','',function(data){
alert(data);
});
其中index.php是你后台发送json数据的php文件,function里面的data参数则是php文件返回的json数据,一般是echo 出来的json数据,第二个参数是用来传递参数给index.php的
‘贰’ php通过curl发送post json给https产生502错误问题!
curl_setopt(self::$ch,CURLOPT_USERAGENT,"Mozilla/5.0(Macintosh;IntelMacOSX10_10_2)AppleWebKit/600.3.18(KHTML,likeGecko)Version/8.0.3Safari/600.3.18");
加一个这个参数模拟浏览器,看看有没有作用
有些服务器非浏览器访问就会502
‘叁’ php镐庝箞銮峰彇杩灭▼JSon鍐呭 骞秔ost涓浜涘弬鏁
$data = file_get_contents($url);//鐩镄勯〉闱㈠唴瀹归傜矖銮峰彇
$t = json_decode($data,1);//杞鎹涓篜HP鏁扮粍
//澶勭悊...
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $urlo);//鏁版嵁鍦嗙ゥ鍙戦佸湴鍧
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);//姗樻ū鎼忓彂阃佺殑鏁版嵁鏁扮粍
curl_exec($ch);
‘肆’ 璇锋暀涓涓狿HP CURL镄凯OST鎻愪氦阆囧埌镄勯梾棰
缁欎綘涓涓镐濊矾,浣跨敤http浠f浛https,铹跺悗鎶揿寘,鐪嬩竴涓媓ttp璇锋眰鍒颁贡鎼搴曟湁浠涔堜笉钖.
鍙﹀,CURLOPT_SSL_VERIFYHOST瀹樻柟鏂囨。链夎存槑:
绂佺敤钖巆URL灏嗙粓姝浠庢湇锷$杩涜岄獙璇併备娇鐢–URLOPT_CAINFO阃夐”璁剧疆璇佷功浣跨敤CURLOPT_CAPATH阃夐”璁剧疆璇佷功鐩褰
濡傛灉CURLOPT_SSL_VERIFYPEER(榛樿ゅ间负2)琚钖鍝椾簭𨰾跨敤锛孋URLOPT_SSL_VERIFYHOST闇瑕佽璁剧疆鎴怲RUE钖﹀垯璁剧疆涓
FALSE銆
镓浠ラ栧厛浣犵殑CURLOPT_SSL_VERIFYPEER鏄璁剧疆涓篺alse镄,镓浠CURLOPT_SSL_VERIFYHOST涔熻佷负false
杩樻湁, 鎴戠湅璇锋眰璁よ瘉骞朵笉鏄浣跨敤http auth, 浣犱负浠涔堟坊锷焘url_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
链钖,瀹樻柟鏂囨。瀵逛簬CURLOPT_POSTFIELDS镄勮В閲
濡傛灉value鏄涓涓鏁扮粍锛孋ontent-Type澶村皢浼氲璁剧疆鎴恗ultipart/form-data
钥屾帴鍙f枃妗d腑鏄庣‘璇存槑
璇锋眰鎺ュ彛(寤鸿浣跨敤post璇锋眰锛屾敞镒忎笉瑕佷娇鐢╩ultipart-post)锛
镓浠ヤ綘鍙浠ュ皾璇
curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($data));
链钖庣殑链钖,璇曡瘯涓嬮溃镄勪唬镰:
<?php
header('Content-Type:text/html;charset=utf-8');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://sendcloud.sohu.com/webapi/list.create.json');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = array(
'api_user' => '*',
'api_key' => '*',
'address' => '[email protected]',
'name' => 'Abao鏂板缓镄勬祴璇曢偖浠跺垪琛',
'description' => '杩欐槸Abao鏂板缓镄勭┖琛娴嬭瘯闾浠跺垪琛',
);
curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($data));
if(false === $result=curl_exec($ch)) {
echo 'false:<br />';
}
var_mp(json_decode($result,true));
curl_close($ch);
‘伍’ 如何用php调用外部接口json数据
两种比较简单的方法:
1、使用curl
$url="http://www.xxxxxxxxxx.com/";
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_TIMEOUT,30);
$output=curl_exec($ch);
curl_close($ch);
echo$output;
2、使用file_get_contents
$output=file_get_contents($url);
echo$output;
3 、使用socket 也是可以的
‘陆’ 如何用php调用外部接口json数据
一般使用php发送请求,获取返回的数据,进行解析;
<?php
$url="接口地址";
//发送请求获取返回值,file_get_contents只支持get请求,post使用curl
$json = file_get_contents($url);
//把json数据转化成数组
$data = json_decode($json,true);
//打印看看
print_r($data);
?>
‘柒’ PHP使用POST传递json数据的接收与处理问题
前端传给服务器的只是json 格式的字符串,使用json_decode,
mixed json_decode ( string $json [, bool $assoc ] )
var_mp(json_decode($json));
var_mp(json_decode($json, true));
如果不带参数,则返回为对象
带上true时,返回数组
foreach($ARR as $k=>$v){
echo 'key='.$k.';value='.$v;
}
单独处理每个key 和对应的value就好
‘捌’ php如何发送和接收JSON数据
对于json,PHP有对应的方法进行操作。
一般而言,json会以字符串形式传给PHP脚本,一般都是放在$_POST里面,
14
<?php
// 接收
$json_parameter = $_POST['json_str'];
// 处理, 变成数组
$array = json_decode($json_parameter);
// PHP 把数组数据变成json格式字符串,发给页面
$demo = array(
'key' => 'value',
'key2' => 'value2'
);
$demo_json = json_encode($demo); // 格式是{"key":"value","key2":"value2"}
echo $demo_json;
‘玖’ PHP如何通过Post请求发送Json数据
首先要把数据转换成json格式,再通过curl方法调用接口并传参数
代码如下:
$keyword=urlencode($_POST['keyword']);
$parameters=json_encode(array('keyWord'=>$keyword,'areaCode'=>'*'));
$post_data['appToken']="323ds7674354fds32fdsda60173";//随便写的
$post_data['parameters']=$parameters;
$url='http://serde.com/compadddvd/index';//随便写的
$ch=curl_init();
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);//用post方法传送参数
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$response=curl_exec($ch);
curl_close($ch);
之后就返回数据即可。
‘拾’ 后端php那里接收到前端post给的json为什么会是转义字符串格式
1,有可能框架对整个参数,进行了转义,反转义一遍即可
2,有可能开启了PHP的自动过滤功能,在php.ini中关闭即可
magic_quotes_gpc=On改为magic_quotes_gpc=Off