javascript-объект для php с использованием jquery 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"}] 

В то время как alert (arr); Дает мне что-то вроде:

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

Теперь мне нужно передать его скрипту PHP, используя метод AJAX jQuery. Но кажется, что он может получить только комбинированные строки, такие как:

{"id":"2305","col":"1"} или {"id":"2305","col":"1","id":"2305","col":"1"}

Но JSON.stringify успешно разбирает объект arr, и мой предыдущий пример строки, который у меня есть, является допустимой строкой JSON. Как я могу перейти к PHP, должен ли я изменить весь формат структуры, как последний образец?

UPD: я забыл упомянуть, что POST-массив PHP имеет значение 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);} }); 

Чтобы получить четкость, предупреждение теперь возвращает правильный JSON:

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

Ahh .. да, а str – объект javascript, а не строка.

Related of "javascript-объект для php с использованием jquery ajax"

Можно отправить 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);