使用php curl获取返回json

时间:2016-12-09 17:43:48

标签: php curl

在档案A:

<?php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://adomain.com/test.php");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true); 
    $result = curl_exec($ch);
    var_dump(json_decode($result, true));
    curl_close($ch);
?>

在档案B中:

<?php
    $json['message'] = 123;
    return json_encode($json);  
?>

在浏览器中运行文件A时,我希望我会从文件B中看到一个返回的json数组,但是我只能看到它显示了#34; NULL&#34;。实际上它有什么问题?感谢。

1 个答案:

答案 0 :(得分:2)

Curl获取脚本的输出。所以你的脚本应该输出printecho):

<?php
    $json['message'] = 123;
    echo json_encode($json);  // not return
?>

如果您的fileA与某个ajax请求相关联,那么您应该了解客户端和服务器之间的通信是通过strings执行的,简单strings

因此,如果fileA.php输出的内容不是正确编码的 json字符串,那么您不能将此输出视为json。因此无法在javascript中使用output.message表示法。因此,您的脚本应该返回正确编码的 json字符串(已由fileB创建):

<?php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://adomain.com/test.php");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true); 
    $result = curl_exec($ch);
    echo $result;   // here, response from fileB which is already json
    curl_close($ch);
?>