假设有ajax
请求的javascript -
index.js -
var dataFeedback = $("#feedback_popup_message_body").val();
var jsonObj = JSON.stringify({dataFeedback: dataFeedback});
$.ajax({
url: "index.php",
type: 'POST',
data: jsonObj,
dataType: 'json',
success: function (data) {
console.log(data);
}
});
在服务器端,php页面 -
的index.php -
<?php
$myPostData = json_decode($_POST["dataFeedback"]);
$feedback = $myPostData["dataFeedback"];
echo $feedback;
?>
我尝试使用请求发送json
对象,并在服务器端解析后,将其返回到客户端页面并记录其数据。
在上面的概念中,它不记录数据值。
我在Chrome > F12 > Networks > index.php > Response
中查了一下,发现了这个 -
<br />
<b>Notice</b>: Undefined index: dataFeedback in <b>...\index.php</b> on line <b>11</b><br />
如何让它记录从服务器返回的data
?
更新:最终导致其起作用的代码 -
index.js -
var dataFeedback = $("#feedback_popup_message_body").val();
$.ajax({
url: "bin/bll/suggestionSummary.php",
type: 'POST',
data: {dataFeedback: dataFeedback},
success: function (data) {
console.log(data);
}
});
的index.php -
<?php
$myPostData = $_POST['dataFeedback'];
echo $myPostData;
答案 0 :(得分:5)
如果你的价值比你为什么使用JSON.stringify? 试试这个......
var dataFeedback = $("#feedback_popup_message_body").val();
var jsonObj = JSON.stringify({dataFeedback:dataFeedback});
$.ajax({
url: "index.php",
type: 'POST',
data: { dataFeedback:dataFeedback },
success: function(data){
console.log(data);
}
});
现在,您可以通过$ _POST直接获取价值[&#39; dataFeedback&#39;];
答案 1 :(得分:1)
您正在发送原始JSON作为请求数据,因此您无法在PHP端使用$_POST
访问它,因为这仅适用于表单编码的键/值对。
您需要在PHP端访问原始帖子数据:
$data = json_decode($HTTP_RAW_POST_DATA);
echo $data->dataFeedback;
最后,您没有在PHP端输出JSON,因此请删除dataType: 'json',
,否则jQuery将尝试将响应解析为JSON并调用错误处理程序。
答案 2 :(得分:1)
jsonObj是一个普通字符串,不再是数组了。
你可能想要什么:
var dataFeedback = $("#feedback_popup_message_body").val();
var jsonObj = JSON.stringify(dataFeedback);
$.ajax({
url: "index.php",
type: 'POST',
data : {dataFeedback: jsonObj },
dataType: 'json',
success: function(data){
console.log(data);
}
});
现在将设置$ _POST [&#39; dataFeedback&#39;]。
如果你想在json_decode之后使用关联数组(注意第二个参数为true):
$myPostData = json_decode($_POST["dataFeedback"], true);