对象数组 json 字符串化和解码 - 无法访问数据

ii iml0sto1

我正在构建一个对象数组,然后将其字符串化并用 ajax 发送,问题是我无法遍历结果并获取所需的数据。

doit.php当我运行 foreach 循环时,整个脚本都崩溃了,但如果我只是回显一个随机字符串,它会发出警报并控制台记录该字符串。

索引.php

<script>
    function ajax(url, parameters, method, form = false, callback = false) {
        var ajax_http = new XMLHttpRequest();
        var ajax_parameters;

        ajax_http.open(method, url, true);
        if (form === false) {
            ajax_parameters = parameters;
            ajax_http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        } else {
            ajax_parameters = new FormData(form);
        }
        ajax_http.onreadystatechange = function () {
            if (ajax_http.readyState === 4 && ajax_http.status === 200) {
                if (callback) {
                    callback(ajax_http.responseText);
                } else {
                    return ajax_http.responseText;
                }
            }
        };
        ajax_http.send(ajax_parameters ? ajax_parameters : null);
    }

    var data = [];

    var obj = {id: 1, name: "christian"};
    data.push(obj);

    var obj = {id: 2, name: "frej"};
    data.push(obj);

    console.log(data);
    data = JSON.stringify(data);
    console.log(data);


    ajax("doit.php", "data=" + data, "POST", false, function (results) {

        alert(results);
        console.log(results);
    });

</script>

必须.php

$data = json_decode($_POST['data']);

$str = "";
foreach($data as $person){
    $str .= $person["name"];
}

echo "str = " . $str;
米克马克库萨

如果您只想访问单列数据并将对象/元素粘合在一起,则不需要循环和使用串联。

我认为array_column()并且implode()看起来会更干净......

代码:(演示

$data=[(object)['id'=>1,'name'=>'christian'],(object)['id'=>2,'name'=>'frej']];

echo implode(', ',array_column((array)$data,'name'));
//                             ^^^^^^^- cast as array if you are not using json_decode($data,true);

输出:

christian, frej

如果你使用$data = json_decode($_POST['data'],true);(我推荐它),那么你可以写:

echo implode(', ',array_column($data,'name'));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章