需要严格化吗?将对象数组从javascript发布到PHP的数据格式混乱
我试图将jQuery/Javascript客户端脚本中的一组对象发布到服务器端PHP脚本 我仍然对对象数组数据在到达服务器之前应该采用的格式感到困惑 我创建了一个数组来存储json对象需要严格化吗?将对象数组从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 =
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'
});