Как преобразовать многомерный массив json в php? - PullRequest
0 голосов
/ 30 января 2020

Я застрял, я гуглил и искал здесь в стеке.

Сначала я создаю JS obj:

var formData = {};

//LOOP THREW TABLE ROWS
$("tr.element_row").each(function(index, element){

     var $this = $(this);
     var $inputs = $this.find("input.formData");

     formData[index] = {};

      //LOOP THREW INPUTS
      $.each($inputs, function(n, e){
         //this is each input in this tr

         if( $(this).attr('name') == 'el' ){
             formData[index]['el'] = $(this).val();
         } ...

Затем я конвертирую его с JSON stringify:

var myJSON = JSON.stringify(formData);

//RESULT (console.log(myJSON))
{"0":{"obj":"1234","el":"1","lit":"1","height":"","type":"","length":"","width":"","weight_kg":"","proj":"BC"},"1":{"obj":"1234","el":"2","lit":"1","height":"","type":"","length":"","width":"","weight_kg":"","proj":"BC"},"2":....

Затем я отправляю его с ajax на PHP:

$.ajax({
    url: 'php/add_elementdata.php',
    method: 'post',
    dataType: "json",
    data: myJSON,

Затем я делаю var_dump($_POST)

//RESULT
array(1) {
["{"0": {"obj":"1234","el":"1","lit":"1","height":"","type":"","length":"","width":"","weight_kg":"","proj":"BC"},"1":{"obj":"1234","el":"2","lit":"1","height":"","type":"","length":"","width":"","weight_kg":"","proj":"BC"},"2":{"obj":"1234","el":"3","lit":"1","height":"","type":"","length":"","width":"","weight_kg":"","proj":"BC"},"3":{"obj":"1234","el":"4","lit":"1","height":"","type":"","length":"","width":"","weight_kg":"","proj":"BC"},"4":{"obj":"1234","el":"5","lit":"1","height":"","type":"","length":"","width":"","weight_kg":"","proj":"BC"}}"]=> string(0) ""}

Затем я хочу создать многомерный массив этого .. array..string ..

$arr = json_decode($_POST);
or
$arr = json_decode($_POST, true);
echo $arr;

Но $arr возвращает пустое значение. почему?

Ответы [ 3 ]

1 голос
/ 30 января 2020

Вы передали data: myJSON,, это означает, что вы передали переменную (вашу строку JSON) с пустым значением. Это было показано в var_dump() - ["json" => '']. Таким образом, вы можете использовать его в PHP следующим образом:

 foreach($_POST as $data=>$emptyVal){
   // here you can add any checking stuff
    $arr = json_decode($data,true) ;
 }

print_r($arr);

Пример

Но вам нужно просто включить data: myJSON, для Например, data: {jsonn : myJSON},. И теперь вы сможете использовать его в PHP как $_POST['jsonn']:

$arr = json_decode($_POST['jsonn'],true) ;
0 голосов
/ 30 января 2020

Попробуйте

$.ajax({ type: "POST", url: "url", data: {data: myJSON}, });

0 голосов
/ 30 января 2020

Когда вы отправляете запрос ajax через jQuery и хотите отправить FormData, вам не нужно использовать JSON .stringify для этих FormData.

, а также при отправке файла тип содержимого должен быть multipart / form-data. так что используйте что-то вроде этого

$.ajax({
    type: "POST",
    url: "url",
    data: formData,
    processData: false,
    contentType: false,
    success: function(response) {
        console.log(response);
    },
    error: function(errResponse) {
        console.log(errResponse);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...