这总是会引发错误,即这些参数都不是有效的。例如:Undefined index: dataNL
接收代码:
$ajax_arrayBTF = $_POST['dataBTF'];
$ajax_arrayLI = $_POST['dataLI'];
$ajax_arrayLS = $_POST['dataLS'];
$ajax_arrayNL = $_POST['dataNL'];
$agent_id = $_POST['agent'];
这是我正在使用的调用代码:
$data = array(
"dataBTF" => "0",
"dataNL" => "0",
"dataLS" => "0",
"dataLI" => "0",
"agent" => "53"
);
$data_string = json_encode($data);
echo $data_string;
$ch = curl_init('http://localhost/site1/backend/scripts/oppCAL.php');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_HTTPHEADERS, array('Content-Type: application/json'));
echo curl_exec($ch);
我不明白为什么会发生这种情况,因为我手动分配它。所以它是有效的。 echo $data_string;
显示
{"dataBTF":"0","dataNL":"0","dataLS":"0","dataLI":"0","agent":"53"}
就像它应该......我决定使用JSON,但即使这样也行不通。 CURL已启用。我在这里缺少什么?
编辑:
当ajax打电话时没有问题。我的ajax是:
$.ajax(
{
type: 'post',
url: 'scripts/oppCAL.php',
data:
{
dataBTF: $array_jsBTF,
dataLI: $array_jsLI,
dataLS: $array_jsLS,
dataNL: $array_jsNL,
agent: $agent_id
},
success: function(e)
{
console.log("done:");
} //success
}); // ajax
答案 0 :(得分:1)
PHP不解析JSON正文数据,只进行编码,就像你的jQuery ajax调用发送一样。它看起来像这样:
dataBTF=0&dataLI=0&dataLS=0&dataNL=0&agent=0
接收JSON时,您可以使用类似的内容来获取数据:
$body = file_get_contents('php://input');
$data = json_decode($body, true);