PHP yazılan jQuery dizi gönder?

2 Cevap php

I have a javascript function that gathers two arrays, imagepaths and captions. I want to send with PHP's post to the same page $_SERVER['PHP_SELF'], but I really don't know where to start..

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 Cevap

Ben prosedür gibi bir şey olacağını söyleyebilirim:

  1. Formdaki, (eğer javascript / jquery ile de daha sonra gizli alanlar ekleyebilirsiniz, kesinlikle gerekli değil) göndermek istediğiniz her değişken için birine bazı gizli alanları ekleyin.
  2. Lütfen javascript nesneleri ve diziler serileştirip bilgi toplar gibi, bu gizli değerlerin değerlerini değiştirmek için javascript kullanın (değişiklik ve / veya eklemek, zaten 1. adımda gizli form alanları eklenmiş olup olmadığını bağlı olarak.)
  3. Php $_POST sizin değerleri almak ve nesneleri ve diziler unserialize.

İşte jQuery POST isteği:

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

Bu aşırı yolculuğu varsayılan çünkü return false davranışını sunacaktır

İşte yazı işlemek için 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']);
}

Bu sadece bir ajax POST isteği.