2010-05-13 8 views
2

J'ai une fonction javascript qui regroupe deux tableaux, chemins d'image et légendes. Je veux envoyer avec le poste de PHP à la même page $ _SERVER [ 'PHP_SELF'], mais je ne sais pas vraiment où commencer ..Envoyer un tableau jQuery à un post PHP?

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; ?>"> 

+0

AFAIK jQuery ne supporte pas cela. Pour les solutions JS pures, voir cette question: http://stackoverflow.com/questions/133925/javascript-post-request-like-a-form-submit – Tgr

Répondre

1

la procédure je dirais serait quelque chose comme:

  1. Ajouter des champs cachés à votre formulaire, un pour chaque variable que vous voulez envoyer (pas strictement nécessaire, vous pouvez ajouter les champs cachés plus tard avec javascript/jquery aussi bien).
  2. Utilisez javascript pour modifier les valeurs de ces valeurs masquées car votre javascript rassemble les informations, sérialisant les objets et les tableaux (modifiez et/ou ajoutez, selon que vous avez déjà ajouté les champs masqués à l'étape 1). en php et désérialiser les objets et les tableaux de $_POST.
+0

Ecrivez dans des champs cachés, c'est ce qui fonctionnera. Salutations Jeroen! – FFish

+0

De rien! – jeroen

0

Voici une demande jQuery POST:

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

Ce écrasera défaut comportement de soumission en raison de la return false

Voici le PHP pour traiter le message:

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']); 
} 

Ceci est juste une requête POST ajax.

+0

Je voulais éviter un appel ajax en fait. – FFish

+0

@FFish, je comprends. – Gutzofter

Questions connexes