1. 程式人生 > >向API 介面傳送和接收json資料(php,js)

向API 介面傳送和接收json資料(php,js)

PHP

1. 傳送json資料,POST

private function https_request($url, $data)
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)){
            curl_setopt($curl
, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($curl); return $output; }

需要傳進來json格式下的data和url介面
在微信介面中,為了避免出現 unicode編碼的問題,傳進來的data資料要經過處理,處理過程:

//陣列形式的
$msg['type'] = '....'; $msg['text'] = '....'; $msg['text] = urlencode($msg['text']); $data = urldecode(json_encode($msg));

2. 接收json資料

上方的程式碼https_request,已經返回了json資料

//把返回值json_decode一下,記得後面的true不能掉,如果沒寫true,預設返回的值是列印msg['text']出來是這樣的".....",寫上true,打印出來是 .... , 即不帶雙引號。
$return = json_decode($res,true
);

JS

利用ajax可以進行介面呼叫,但是注意跨站問題,跨站是不允許呼叫的。

var request2 = new XMLHttpRequest();
                                       request2.open("GET","http:......&text="+text+"&type="+type);
request2.send(null);                                     request2.onreadystatechange = function() {                                       if(request2.readyState == 4 && request2.status == 200) {
      var result = request2.responseText;
      //進行的操作就是去掉雙引號
      result = eval("(" + result + ")");

直接在URL中帶過去資料,具體可以參考XMLHttpRequest(),4,200是返回值,具體的也要參考文件。