我正在尝试使用代理脚本发送发布数据以执行跨域ajax。使用curl和ajax发送发布数据
var data = "url=http://www.fhm.com.ph/templates/100sexiestwomen2013/ajax/set.php&id=13&index=0&action=add";
$.ajax({
url: "proxy.php",
data: data,
type: "POST",
success: function(data, textStatus, jqXHR) {
console.log('Success ' + data);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log('Error ' + jqXHR);
}
});
然后我尝试解析数据以用作我的代理脚本中的url和参数。
<?php
//set POST variables
$url = $_POST['url'];
unset($_POST['url']);
$fields_string = "";
//url-ify the data for the POST
foreach($_POST as $key=>$value) {
$fields_string .= $key.'='.$value.'&';
}
$fields_string = rtrim($fields_string,'&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
但事实证明,它不会正确发布数据。
尝试使用邮递员,铬扩展POSTMAN。并给出正确的键值对,如data
所示。
它会给你null
第一次提交和selected
秒。
我错过了什么。
EDIT
<?php
//set POST variables
$url = $_POST['url'];
// unset($_POST['url']);
// $fields_string = "";
// //url-ify the data for the POST
// foreach($_POST as $key=>$value) {
// $fields_string .= $key.'='.$value.'&';
// }
// $fields_string = rtrim($fields_string,'&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$_POST);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
如在编辑中所示,移除我手工构建,代替我用POST阵列。
你试过了吗?似乎它不工作太.. –
@JoeySalacHipolito好吧我现在看到发生了什么事情,我认为这只是一个参数。 – Musa
我认为它仍然不起作用,你也可以试试它,也许我会捣鼓它,也想捣鼓它呢? –