【问题标题】:AJAX rerouting from CURL with associative array parameters使用关联数组参数从 CURL 重新路由 AJAX
【发布时间】:2014-05-10 09:40:31
【问题描述】:

我正在尝试通过 ajax 使用 POST 请求访问另一个站点。于是访问流程变成了:

AJAX 请求 -> PHP CURL -> www.somedomain.com

这是 AJAX 请求的代码。我保证它正确地传递了参数:

$("#new_access_token").submit(function(ev){

$.ajax({
    url : "back_access/access_code.php",
    type : "POST",
    data: "access_token[app_id]=601&access_token[subscriber_num]="+$("#input-phone-number").val(),

    success : function(res){
        console.log(res);
    }
});

return false;
 });

php curl 脚本在这里(access_code.php):

    $ch = curl_init();

$url = "http://developer.globelabs.com.ph/oauth/request_authorization";

$data =  array("access_token" => array(

    'app_id' => $_POST['access_token']['app_id'],
    'subscriber_number' => $_POST['access_token']['subscriber_number']

));

curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");   
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);

$result = curl_exec($ch);

print_r($result);

curl_close($ch);

它返回“500”错误。使用终端 curl 和 Advanced Rest Client 中的正确参数,它返回页面。但是,此脚本没有。如何控制参数?

【问题讨论】:

    标签: php jquery ajax curl


    【解决方案1】:

    因为您要发布多维度数组,所以您必须手动构建 POST 字符串,而不是在 .. 中传递整个数组,您应该添加带有表单类型 multipart 和其他相关内容的 curl 标头,例如 accept , @ 987654323@等

    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-type: multipart/form-data"));
    

    如果您对整个字段进行序列化或 jsone_encode,则可以发送数据,但在这种情况下,您还需要从服务器端捕获数据并对其进行反序列化/json_decode。

    【讨论】:

    • 这和 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 一样
    • 对不起,我无法控制服务器端。我必须完美地发送它。
    • 这里有一个链接你可以得到帮助stackoverflow.com/questions/1916819/…
    • 这样还是不行。嵌套在里面的数组变成了字符串。
    猜你喜欢
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 2018-06-13
    • 2019-09-30
    • 1970-01-01
    • 2023-04-04
    • 2014-01-06
    • 1970-01-01
    相关资源
    最近更新 更多