我正在尝试通过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中的正确参数,它将返回页面。但是,这个脚本没有。如何控制参数?
答案 0 :(得分:0)
因为您要发布多维数组,所以您必须手动构建POST字符串,而不是传递整个数组..您应该添加带有表单类型multipart的curl标头和其他相关内容,例如{{1 },accept
等
content-length
如果序列化或jsone_encode整个字段,您可以发送数据,但在这种情况下,您还需要捕获数据并从服务器端反序列化/ json_decode它。