2010-09-12 11 views
0

Essayer d'envoyer un tableau à partir:Envoyer un tableau avec Ajax JQuery

<select name='galaddvenn[]' class='sel_add vl hidden' multiple='multiple'> 
<option value='53'>name1</option> 
<option value='352'>name2</option> 
<option value='632'>name3</option> 
<option value='543'>name4</option>..etc 
</select> 

... à/de Jquery avec:

var ar = $("select#galaddvenn").serialize(); 

     j.ajax({ 
     data: ({ar : ar}), //tried with 'ar':ar 
     dataType: "html", 
     type:"post", 
     url: "/ajax_gal_addvenn.php", 
     cache: false, 

.... etc à PHP:

if(isset($_POST['ar'])){ 
$ar = mysql_real_escape_string($_POST['ar']); 
var_dump($ar); 

Ça me donne: bool (false) :(

Qu'est-ce que je fais de mal ici?

Répondre

3

.serialize() obtient une chaîne complète POST par lui-même, donc il sera formaté comme ceci:

galaddvenn=53&galaddvenn=352&galaddvenn=632 

donc votre appel devrait ressembler à ceci:

j.ajax({ 
    data: ar, 
    dataType: "html", 
    type:"post", 
    url: "/ajax_gal_addvenn.php", 
    cache: false 
}); 

Puis sur le côté PHP, vous cherchez $_POST['galaddvenn'] à la place.

You can test the output here.

+0

Merci beaucoup! :RÉ – teecee

0

mysql_real_escape_string() attend une chaîne. Vous ne pouvez pas l'utiliser sur votre tableau. Vérifiez le docs pour plus d'informations. Vous devez utiliser une boucle pour le faire:

foreach ($_POST['ar'] as $key => $element) { 
    $_POST['ar'][$key] = mysql_real_escape_string($element); 
} 

Si vous obtenez des erreurs comme celle-ci, vous devez tester vos données entrantes avant de les manipuler (utiliser par exemple var_dump() avant d'appliquer mysql_real_escape_string()).

+0

@Thundercat - Il est essentiellement vide, ou plutôt une chaîne inutile, voir ma réponse :) –

+0

@Thundercat: La raison en est que vous devriez chercher '$ _POST ['galaddvenn']' comme suggéré par Nick Craver. Utilisez 'var_dump()' sur '$ _POST' pour voir pourquoi;) – jwueller

+0

Merci beaucoup! fonctionne bien maintenant: D – teecee

Questions connexes