使用关联数组参数从CURL进行AJAX重路由


AJAX rerouting from CURL with associative array parameters

我试图通过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;
 });

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中的正确参数,它将返回页面。然而,这个脚本没有。如何控制参数?

因为你是张贴多维数组,所以你必须手动构建POST字符串,而不是传递整个数组..你应该添加curl头与表单类型multipart和其他相关的accept, content-length

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

如果你序列化或json_encode整个字段,你可以发送数据,但在这种情况下,你还需要捕获数据和反序列化/json_decode它从服务器端