Как мне $ .post массив с jQuery, чтобы я мог использовать массив в моем файле PHP? - PullRequest
0 голосов
/ 03 декабря 2009

У меня есть следующий фрагмент кода jQuery:

function saveSchedule()
{
    var events = [];

         $('ul#schedule-list').children().each(function() {
             events.push($(this).attr('value'));
         });

         jQuery.each(events, function()
         {
             alert(this);
         });


         $.post("schedule_service.php?action=save_schedule", 
         { events: events, studentid:  $('#student').val() }, 
         function(data) { 
             alert(data);
         }, 'json');   
     }

Который получает все 'значения' из списка на моей странице и помещает их в массив событий.

Затем, ниже, я передаю этот массив плюс студент в раздел данных моего вызова $ .post.

Однако, когда я получаю этот массив на моей стороне PHP, кажется, что это единственное значение:

<?php

    include_once('JSON.php');
    $json = new Services_JSON();


    if ($_GET['action'] == 'save_schedule')
    {
        $event_list = $_POST['events'];

        echo $json->encode($event_list);
        exit;
    }
?>

(примечание: я использую более старую версию PHP, отсюда и библиотеку JSON.php.)

Теперь все, что когда-либо возвращается, это "14", что является последним событием в массиве событий.

Сообщение:
alt text

Ответ:
alt text

Как я справляюсь с передачей массива в моем $ .post неправильно?

Ответы [ 4 ]

8 голосов
/ 03 декабря 2009

Это может показаться глупым, но попробуйте это:

$.post("schedule_service.php?action=save_schedule", 
         { 'events[]': events, studentid:  $('#student').val() }, 
         function(data) { 
             alert(data);
         }, 'json');

PHP автоматически проанализирует имя ключа events[] в фактический массив внутри php ...

0 голосов
/ 03 декабря 2009

Верьте или нет, просто используйте 'events[]': events в своем запросе $.post вместо events: events (без скобок).

0 голосов
/ 03 декабря 2009

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

0 голосов
/ 03 декабря 2009

Вы можете передать элементы массива в виде строки, содержащей все элементы, объединенные символом. Затем вы можете разбить массив в своем php-коде и извлечь значения из него.

Используйте join () , чтобы объединить элементы массива.

присоединиться (разделитель);

разделитель:

Определяет строку для разделения каждого элемент массива. Разделитель при необходимости преобразуется в строку. Если опущены, элементы массива через запятую.

Используйте explode () на стороне PHP, чтобы превратить строку ** join () ** ed вместе.

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