当前位置: 首页 > 面试题库 >

使用jquery ajax将javascript对象转换为php

奚和光
2023-03-14
问题内容

我有一个像这样创建的数组或javascript对象:arr[arr.length]=obj 其中obj是像这样
的经典JSON字符串{"id":1}

因此arr似乎是一个JavaScript对象数组。

我可以这样访问它: arr[1]arr[2]。甚至可能像alert(arr[1].id);

如果我这样做:alert(JSON.stringify(arr)); 我得到以下内容:

[{"id":"2305","col":"1"},{"id":"2308","col":"1"},{"id":"2307","col":"1"},{"id":"2306","col":"1"}]

而警报(警报);给我类似的东西:

[object Object],[object Object],[object Object],[object Object],[object Object]

现在,我需要使用jQuery的AJAX方法将其传递给PHP脚本。但是似乎只能得到组合字符串,例如:

{"id":"2305","col":"1"} 要么 {"id":"2305","col":"1","id":"2305","col":"1"}

但是JSON.stringify成功解析了arr对象,而我之前的字符串示例似乎是有效的JSON字符串。如何传递给PHP,我是否应该真正将结构的整个格式更改为上一个示例?

UPD:我忘了提到,如果向其发送’{},{},{}’字符串而不是’{}’字符串,则PHP的POST数组为null。

UPD:我重写了生成字符串的代码。现在我有一个像这样的字符串:

{"2305":"1","2306":"1"}

如果我直接将其传递给PHP,它会起作用,如下所示:

   $.post({url: '../getItems2Cart.php', data:{"2305":"1","2306":"1"} ,
       success: function(response){alert(response);}
   });

如果我这样发送,php返回空的POST数组:

$.post({url: '../getItems2Cart.php', data: JSON.stringify(str),.
       success: function(response){alert(response);}
});

为了清楚起见,alert现在会返回适当的JSON强度:

alert('json str to php '+JSON.stringify(str));
//json str to php {"2305":"1","2306":"1"}

嗯..是的,str是一个JavaScript对象,而不是字符串


问题答案:

可以发送JSON并将其用于json_decode()将其转换为php数组。

$.post('server/path', { jsonData: JSON.stringify(arr)}, function(response){
   /* do something with response if needed*/
});

在php中:

$arr=json_decode( $_POST['jsonData'] );
/* return first ID as test*/
echo $arr[0]['id'];
/* or dump whole array as response to ajax:*/
print_r($arr);


 类似资料:
  • 问题内容: 因此,我得到了以下javascript,其中包含键/值对,用于将嵌套路径映射到目录。 现在,我要做的是根据地图中的键创建一个JSON对象。 它一定要是, 不知道是否有开箱即用的方式来执行此操作。任何帮助表示赞赏。 问题答案: 您可以在地图和键上循环并分配值

  • 问题内容: 转换的最佳方法是什么: 至: 问题答案: ECMAScript 6引入了易于填充的内容: 该方法用于将所有可枚举的自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。 数组的自身属性不会被复制,因为它无法枚举。 另外,您可以使用ES6 传播语法来达到相同的结果:

  • 问题内容: 我有一个简单的csv文件 people.csv: 我想要做的是获取CSV的每一行,将其转换为JavaScript对象,将其存储到数组中,然后将数组转换为JSON对象。 server.js: 我的问题是,当我在bufferString上调用.split(’\ n’)方法时,是否实际上是将CSV行转换为Javascript对象,还是有另一种方法? 问题答案: 通过做这个: 您将拥有一个包含

  • 问题内容: 我正在尝试将数组转换为对象,并且我快到了。 这是我的输入数组: 这是我当前的输出对象: 这是我想要的输出对象: 这是我当前的代码: 问题答案: 你不能那样做。 不是有效的JavaScript对象。 javascript中的对象是键值对。看看你的情况如何,然后是冒号,然后是数字?的是,号码是的。 如果执行此操作,则将无法访问属性。 这是Firefox控制台的结果:

  • 问题内容: 假设我有一个像这样的数组 但我想将其转换为这样的对象: 能做到吗?我尝试过的所有方法都只会获得最后一个键值对。 问题答案: 如果您使用的是ES6或更高版本:

  • 我想将以下字符串作为json发布到服务器。 {“FirstName”:“John”,“LastName”:“Smith”},{“FirstName”:“John”,“LastName”:“Smith”} 但是如果我使用下面的代码,我会得到json对象的数组列表。 输出: [{"FirstName":"John","LastName":"Smith" }, { "FirstName":"John",