小编典典

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

ajax

我有一个像这样创建的数组或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对象,而不是字符串。


阅读 228

收藏
2020-07-26

共1个答案

小编典典

可以发送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);
2020-07-26