PHP / Javascript变量传递-意外结果

时间:2018-08-24 12:50:51

标签: javascript php

我正在从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

2 个答案:

答案 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_);