Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要严格化吗?将对象数组从javascript发布到PHP的数据格式混乱_Javascript_Jquery_Ajax_Json_Post - Fatal编程技术网

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

需要严格化吗?将对象数组从javascript发布到PHP的数据格式混乱,javascript,jquery,ajax,json,post,Javascript,Jquery,Ajax,Json,Post,我试图将jQuery/Javascript客户端脚本中的一组对象发布到服务器端PHP脚本 我仍然对对象数组数据在到达服务器之前应该采用的格式感到困惑 我创建了一个数组来存储json对象 var jsonObjects = []; 我将单个json对象添加到数组中 var jsonObj1 = {}; jsonObj1.place = "London"; jsonObj1.position = 1; jsonObjects.push(jsonObj1); var jsonObj2 =

我试图将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);
等等

然后我尝试通过ajax post发布这些数据。我在发布之前尝试过字符串化,也尝试过不使用字符串化

e、 g

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

而不是像以前的帖子细节那样,将数据分解成参数。当然,除非PHP能够在字符串化状态下查找数据

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

非常感谢为澄清这一点提供的任何帮助:

谢谢


Rowan

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


另一方面,如果您的对象是简单的key:value对象,没有太多深度的多维数组,那么它们可以作为querystring发送,并解析为PHP的$\u POST/$\u GET/$\u REQUEST

好的,谢谢。js对象是否需要以文本形式表示才能将数据发布到PHP?好的,您正在通过HTTP与PHP通信。所以,是的,无论你发送什么都必须是纯文本。嗨,是的,这很有意义。我想我困惑的地方是,我在某个地方读到,如果你发布一个对象数组并指定json的数据类型,它将为你将其转换为字符串。数据类型指定你期望返回的响应的格式。您发送到PHP的内容是通过HTTP发送的。由于HTTP不能表示JavaScript的内部数据结构,它必须将JS对象转换为可以来回序列化的对象—因此,您必须发送JS对象的文本表示—这就是stringify的功能。然后,PHP可以尝试在自己的内部数据结构数组或对象中通过json_解码来转换这段文本。啊哈!对..我没有意识到数据类型就是这个意思..现在您指出了,通过HTTP发送它必须是字符串表示法,这非常有意义..再次感谢!
//var data = jsonObjects;
//var data = JSON.stringify(jsonObjects);

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