我已经通过jquery中的ajax传递了json字符串。我的JSON文件有复选框和列表值。
var jsonstr = JSON.stringify(result);
此处'jsonstr'是选定的表单元素。
function runAjax(jsonstr)
{
type:"POST",
url: "ajax.php",
data: 'json=' +jsonstr,
dataType: 'json',
headers: {
'Content-Type': 'application/json',
success: function(){
alert('Test results submitted!');
},
};
return false;
在php中,我试图像这样接收JSON字符串,但它输出的结果类似于“null”。
$data= $_POST['json'];
//decode Json string to PHP object
$phpobj = json_decode($data,true);
print_r($data);
$phpobj = json_encode($data,true);
我正在做什么,在解码部分应该是什么?有人可以帮忙吗?
答案 0 :(得分:2)
如果你想把它作为json字符串发送,请像这样给出
data: {json:jsonstr}
所以它应该是
$.ajax({
type : 'POST',
url : 'sample2.php',
data: {json:jsonstr},
success : function(data){
alert(data);
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
alert("error");
}
});
它应该适合你。
实际上没有必要将对象转换为json。您可以直接在$.ajax
中提供。
var data = {name:"Jack", age:12, place:"CA", marks:70};
$.ajax({
type : 'POST',
url : 'post.php',
data: data,
success : function(data){
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
}
});
在php中你可以像
一样阅读 $_POST['name']
$_POST['age']
$_POST['place']
$_POST['marks']
答案 1 :(得分:0)
请检查$ _POST ['json']的值。它应该包含类似{“a”:“aaa”,“b”:“bbbb”}的内容。
检查“使用json_decode()的示例#3常见错误”这里http://php.net/manual/en/function.json-decode.php
答案 2 :(得分:0)
您可以尝试以下操作:
在 Javascript 更改
<德尔> var jsonstr = JSON.stringify(result);
德尔>
和
<德尔> data: 'json=' +jsonstr,
德尔>
到一个简单的
data: JSON.stringify({json: result}),
在 PHP 中读取数据而不是这种方式
<德尔> $data= $_POST['json'];
德尔>
在这一个
$data=json_decode(stripslashes(file_get_contents('php://input')));
完成后,以这种方式访问您的数据:
$data->{'variable-name'}
答案 3 :(得分:-2)
你很幸运,我理解这个问题
var jsonObject = eval("(" + jsonFormat + ")");