【问题标题】:can't read json data passed to $.ajax to php curl无法读取传递给 $.ajax 到 php curl 的 json 数据
【发布时间】:2013-06-08 12:57:58
【问题描述】:

我已将数据传递给 ajax 以 curl 但无法解析我在 ajax 中获取的 json 数据调用我的 ajax 代码。

$.ajax({
      url: 'http://localhost/curl_call.php',
         type:"POST",
        data:
    {
        url_path:"http://localhost/login/", 
        data:"name=bddd&password=abc",
    },
    crossDomain: true,
        processData: true,
        success:function(response)
    {
              res_par=JSON.parse(response);
               alert(res_par["success"]);
            }
 )};

curl_call.php:

function curl_load($url,$post_data){
curl_setopt($ch=curl_init(), CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

$response = curl_exec($ch);
curl_close($ch);
return $response;

}

if((isset($_POST["url_path"]))&&($_POST["url_path"]=="http://localhost/api/login/"))
{
echo json_encode(json_decode(curl_load($_POST["url_path"],$_POST["data"])));
}

为什么无法解析返回数据?

【问题讨论】:

  • 您的代码示例不一致。您正在调用$.ajax 并将url_path 设置为http://localhost/login/,但在PHP 脚本中,您希望将其设置为http://localhost/api/login/,这会失败并且curl_load 函数可能永远不会被调用。

标签: php ajax jquery curl


【解决方案1】:

似乎您需要在脚本中进行一些调试。按顺序尝试以下操作:

  1. 首先,为什么json_decodejson_encode是同一个字符串?

  2. 然后,检查您的响应是否为有效的JSON 字符串。你可以在这里试试:http://json.parser.online.fr/

  3. 您确定response 是您的json 上的有效属性吗?

  4. 尝试将其添加到 curl_call.php 的顶部。

    header('Content-type: application/json; charset=utf-8');

  5. 并将你的JS的success函数替换为以下内容,然后检查浏览器的控制台:

    成功:函数(响应){ 控制台日志(响应); }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 2018-01-18
    • 1970-01-01
    • 2016-10-21
    • 2017-11-14
    • 1970-01-01
    相关资源
    最近更新 更多