Попытка отправить кодированный массив json из php в файл js, «Неожиданный конец ввода» - PullRequest
0 голосов
/ 20 февраля 2020

Поэтому я пытаюсь отправить массив объектов в функцию js каждый раз, когда нажимаю sh кнопку.

<button onclick="actualizarProcesos(<?php echo json_encode($p_array)?>);">X</button>

Я убедился, что мой json не отправляет какие-либо странные символы как в основном это int, за исключением атрибута объекта "name", который является строкой.

Эта функция находится в другом файле js:

   function actualizarProcesos(p_array){
    var p = JSON.parse(p_array);
}

В данный момент я пытаюсь отправить убедитесь, что функция получает данные, но продолжает выдавать ошибку Uncaught SyntaxError: Unexpected end of input Так что я застрял, пытаясь выяснить, как исправить ошибку.

Я планирую впоследствии отправить этот массив в другой php файл с использованием ajax, что-то вроде этого:

$.ajax({
            type: "POST",
            url: "post.php",
            data: JSON.stringify(values),
            success: function(data){
                alert(data)
            }
    });

Это полный json Я пытаюсь отправить

[{"name":"A","t_arrival":7,"t_est":25,"state":1,"pages":5,"mem_data":[[1,8,13,5,0,1],[0,0,0,0,0,0],[1,11,17,3,1,1],[1,12,16,4,0,1],[0,0,0,0,0,0]],"t_rem":25,"t_wait":0,"rem_quantum":0},{"name":"B","t_arrival":6,"t_est":13,"state":2,"pages":4,"mem_data":[[0,0,0,0,0,0],[1,9,16,5,0,1],[1,7,14,6,1,0],[0,0,0,0,0,0]],"t_rem":13,"t_wait":0,"rem_quantum":0},{"name":"C","t_arrival":8,"t_est":37,"state":3,"pages":3,"mem_data":[[1,9,12,2,0,0],[0,0,0,0,0,0],[1,13,21,7,0,1]],"t_rem":37,"t_wait":0,"rem_quantum":0}]

Ответы [ 3 ]

0 голосов
/ 20 февраля 2020

Проверено, работает нормально. Надеюсь, это поможет вам.

    <?php 
     $p_array = [
       [
             "name" => "A", 
             "t_arrival" => 7, 
             "t_est" => 25, 
             "state" => 1, 
             "pages" => 5, 
             "mem_data" => [
                [
                   1, 
                   8, 
                   13, 
                   5, 
                   0, 
                   1 
                ], 
                [
                      0, 
                      0, 
                      0, 
                      0, 
                      0, 
                      0 
                   ], 
                [
                         1, 
                         11, 
                         17, 
                         3, 
                         1, 
                         1 
                      ], 
                [
                            1, 
                            12, 
                            16, 
                            4, 
                            0, 
                            1 
                         ], 
                [
                               0, 
                               0, 
                               0, 
                               0, 
                               0, 
                               0 
                            ] 
             ], 
             "t_rem" => 25, 
             "t_wait" => 0, 
             "rem_quantum" => 0 
          ], 
       [
                                  "name" => "B", 
                                  "t_arrival" => 6, 
                                  "t_est" => 13, 
                                  "state" => 2, 
                                  "pages" => 4, 
                                  "mem_data" => [
                                     [
                                        0, 
                                        0, 
                                        0, 
                                        0, 
                                        0, 
                                        0 
                                     ], 
                                     [
                                           1, 
                                           9, 
                                           16, 
                                           5, 
                                           0, 
                                           1 
                                        ], 
                                     [
                                              1, 
                                              7, 
                                              14, 
                                              6, 
                                              1, 
                                              0 
                                           ], 
                                     [
                                                 0, 
                                                 0, 
                                                 0, 
                                                 0, 
                                                 0, 
                                                 0 
                                              ] 
                                  ], 
                                  "t_rem" => 13, 
                                  "t_wait" => 0, 
                                  "rem_quantum" => 0 
                               ], 
       [
                                                    "name" => "C", 
                                                    "t_arrival" => 8, 
                                                    "t_est" => 37, 
                                                    "state" => 3, 
                                                    "pages" => 3, 
                                                    "mem_data" => [
                                                       [
                                                          1, 
                                                          9, 
                                                          12, 
                                                          2, 
                                                          0, 
                                                          0 
                                                       ], 
                                                       [
                                                             0, 
                                                             0, 
                                                             0, 
                                                             0, 
                                                             0, 
                                                             0 
                                                          ], 
                                                       [
                                                                1, 
                                                                13, 
                                                                21, 
                                                                7, 
                                                                0, 
                                                                1 
                                                             ] 
                                                    ], 
                                                    "t_rem" => 37, 
                                                    "t_wait" => 0, 
                                                    "rem_quantum" => 0 
                                                 ] 
    ]; 
    $p_array = json_encode($p_array);
    ?>
    <button onclick='actualizarProcesos(<?php echo $p_array ?>)' >X</button>
    <script>
    function actualizarProcesos(arr){
        console.log(arr);
    }
</script>
0 голосов
/ 20 февраля 2020

Я убедился, что мой json не отправляет какие-либо странные символы, поскольку он в основном int, за исключением атрибута объекта "name", который является строкой.

Строки в JSON ограничены " символами.

<button onclick="actualizarProcesos(<?php echo json_encode($p_array)?>);">X</button>

Ваше значение атрибута HTML ограничено " символами.

" в данных обрезает значение атрибута.

Вам необходимо кодировать свои данные (используя htmlspecialchars) для встраивания в HTML:

<?php echo htmlspecialchars(json_encode($p_array)); ?>
0 голосов
/ 20 февраля 2020

Вы можете сделать это таким образом

<p id="test" style="display:none"><?php echo json_encode($p_array); ?></p>

<button onclick="actualizarProcesos(test)" id="">X</button>
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
function actualizarProcesos(test){
var p_array = $('#test').html();
var p = JSON.parse(p_array);

alert(p);

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...