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

时间:2014-05-10 09:40:31

标签: php jquery ajax curl

我正在尝试通过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中的正确参数,它将返回页面。但是,这个脚本没有。如何控制参数?

1 个答案:

答案 0 :(得分:0)

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

content-length

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