需要抽丝吗?从javascript到PHP发布对象数组的数据格式混乱

Need to stringify? Confusion over format of data for posting array of objects from javascript to PHP

本文关键字:对象 布对象 数组 混乱 数据格式 PHP javascript      更新时间:2023-09-26

我正试图将一组对象从jQuery/Javascript客户端脚本发布到服务器端PHP脚本。

我仍然对对象数组数据在到达服务器之前应该采用的格式感到困惑。

我创建了一个数组来存储json对象

var jsonObjects = [];

我将单个json对象添加到数组

var jsonObj1 = {};
 jsonObj1.place = "London";
 jsonObj1.position = 1;
 jsonObjects.push(jsonObj1);
 var jsonObj2 = {};
 jsonObj2.place = "Melbourne";
 jsonObj2.position = 2;
 jsonObjects.push(jsonObj2);

etc

然后我尝试通过ajax发布这些数据(我在发布之前尝试过字符串化,也尝试过不进行字符串化)

例如

//var data = jsonObjects;
//var data = JSON.stringify(jsonObjects);
jQuery.ajax({
            url: "/drupal/menu_item",
            type: 'POST',
            data: data
            dataType: 'json'
             });

无论哪种方式,在Firebug的XHR选项卡上,它都只显示数据的字符串版本例如。[{"地方":"伦敦","位置":"2"},{"地点":"墨尔本","职位":"1"}]

而不是像以前发布的细节一样,将数据分解为参数。当然,除非PHP在字符串化状态下查找数据,否则实际上可以工作(?)

关于如何向PHP发送json对象数组,我似乎发现了一些相互矛盾的细节。在执行ajax请求时,数据应该处于什么状态?a) 字符串化对象数组b) 对象数组c) 又是别的东西了(?)

任何澄清这一点的帮助都将不胜感激:)

谢谢,

Rowan

字符串化数据只是JS对象的文本表示。因此,您可以在字符串化的JS对象上运行json_decode,以获得PHP数据结构。

另一方面,如果您的对象是简单键:没有太多深度的值对象(多维数组),那么它们可以作为查询字符串发送,并解析为PHP的$_POST/$_GET/$_REQUEST