Отправить массив jQuery в пост PHP? - PullRequest
2 голосов
/ 14 мая 2010

У меня есть функция javascript, которая собирает два массива, пути к изображениям и подписи. Я хочу отправить сообщение PHP на ту же страницу $ _SERVER ['PHP_SELF'], но я действительно не знаю, с чего начать ..

PHP:

if (isset($_POST['Submit'])) {
    $edit_photos->update_xml($edit_photos->album_id, $_POST['src_arr'], $_POST['caption_arr']);
    // prevent resending data
    header("Location: " . $_SERVER['PHP_SELF'] . "?ref=" . $ref);
}

JS:

function getImgData() {
    var imgData = { 'src_arr': [], 'caption_arr': []};
    $('.album img').each(function(index){
        imgData.src_arr.push($(this).attr('src'));
        imgData.caption_arr.push($(this).attr('alt'));
    });
    return imgData;
};

HTML:

<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'] . "?ref=" . $ref; ?>">

Ответы [ 2 ]

1 голос
/ 14 мая 2010

Я бы сказал, что процедура будет выглядеть примерно так:

  1. Добавьте в форму несколько скрытых полей, по одному для каждой переменной, которую вы хотите отправить (необязательно, вы можете добавить скрытые поля позже также с помощью javascript / jquery).
  2. Используйте javascript для изменения значений этих скрытых значений, когда ваш javascript собирает информацию, сериализует объекты и массивы (изменяйте и / или добавляйте, в зависимости от того, добавили ли вы уже скрытые поля формы на шаге 1).
  3. Получите ваши значения из $_POST в php и десериализуйте объекты и массивы.
0 голосов
/ 14 мая 2010

Вот запрос JQuery POST:

$('form').submit(function() {
    $.post('ImageProcessor.php', 
            { imgdata: getImgData() },
            function() {
                alert('Processed Images');
            });
    return false;
});

Это переопределит поведение отправки по умолчанию из-за return false

Вот PHP для обработки сообщения:

if (array_key_exists('imgData', $_POST)) {
    $imgData = json_decode($_POST['imgData']);

    $edit_photos->update_xml($edit_photos->album_id, $imgData['src_arr'], $imgData['caption_arr']);
}

Это просто запрос ajax POST.

...