我正在从JavaScript(在Chrome版本67.0.3396.99上)调用php页面(使用PHP7.0)。在网上阅读时,我使用了一个代码示例。通过PUT向php传递json字符串应该传递一个$ _POST变量,它是一个映射。
{"a":"A","b":"B","c":"C"}
变为
$_POST = [ "a" => "A", "b" => "B", "c"=>"C" ]
但是,在下面的代码中,却改为传递了javascript
$_POST = [ "{"a":"A","b":"B","c":"C"}" : "" ]
这很奇怪。如果没有地图,我会期望有一个字符串
我做错了吗?认为该代码对于生产不可靠有点不知所措。还是有更好的方法?
javascript:
function testeroo(){
json_ = '{"a":"A","b":"B","c":"C"}'
jQuery.ajax({
type: "POST",
url: './test.php',
data: json_,
success: function (obj) {
alert(obj);
},
error: function () {
alert("ERROR testeroo");
}
});
}
test.php确认了这一点:
foreach ($_POST as $key => $value){
$zeroKey = $key;
//only one key, so $zeroKey is only key
}
$j = json_decode($zeroKey);
//$j is the expected map
答案 0 :(得分:4)
您的json_
是字符串,请删除''
json_ = {"a":"A","b":"B","c":"C"}
答案 1 :(得分:0)
两种解决方案:
1
由其他用户建议:
从您的json字符串中删除''
2
如果要使用字符串,还必须使用函数 JSON.parse()
示例
var json_= '{"a":"A","b":"B","c":"C"}';
json_= JSON.parse(json_);