Как отправить массив объектов JSON с помощью jQuery

#php #javascript #json #jquery

#php #javascript #json #jquery

Вопрос:

Я программирую веб-страницу, и я действительно застрял, пытаясь отправить массив объектов JSON в мой серверный скрипт PHP.

это мой код javascript (с использованием jQuery):

             var toSend = new Array();
            $("input[type=checkbox]").each(
                function (indice, item)
                {
                    var dom = $(item);
                    var domJSON = {
                        id: dom.attr("value"),
                        checked: (dom.attr("checked") == "checked" ? true : false)
                    };
                    //put object as JSON in array:
                    toSend.push($.toJSON(domJSON));                        
                }
            );
            $.ajax({
                type:"POST",
                url: "salvar_escala.php",
                data: {checkbox: toSend},
                success: function(response) {
                    $("#div_salvar").html(response);
                },
                error: function() {
                    alert("Erro");
                }
              }
            );
  

И в PHP у меня есть это:

     //Grab the array
    $arrayFromAjax = $_POST['checkbox'];

    foreach($arrayFromAjax as $aux) {
        $temp = json_decode($aux, true);
        $id = $temp['id'];
        $value = $temp['checked'];

        //This line doesn't print anything  for $id and $value
        echo "Id: $id | Value: $value<br />";

        //This line prints an crazy string, but with right values
        echo "CHEKBOX[] => $b<br />";
    }
  

В этом коде я декодирую свои объекты в json, помещаю их в массив и отправляю. Я также пробовал, но объекты в массиве (без json), а затем преобразовал массив в json и отправил их таким образом:

             $.ajax({
                type:"POST",
                url: "salvar_escala.php",
                dataType: "json",
                data: {checkbox: $.toJSON(toSend)},
                success: function(response) {
                    $("#div_salvar").html(response);
                },
                error: function() {
                    alert("Erro");
                }
              }
            );
  

Но в этом случае все еще хуже, вызывается функция ошибки.

Ответ №1:

Вы должны быть в состоянии сделать следующее в PHP

 <?php
$checkboxes = json_decode($_POST['checkbox']);
foreach($checkboxes as $checkbox) {
    $id = $checkbox['id'];
    $val = $checkbox['value'];
    print $id . ': ' . $val;
}
  

Проблема в том, что вы пытаетесь перебирать строку JSON без предварительного декодирования ее в массив PHP.

Комментарии:

1. Спасибо, чувак! Я был немного смущен json_encode / decode!