2010-07-01 4 views
1

Je viens d'essayer et j'ai plus ou moins abandonné l'envoi d'un tableau à une fonction post jQuery, qui sont ensuite présentés comme des variables POST.jQuery .post avec un tableau de variables dynamiques

J'ai lu beaucoup de questions similaires ici, mais aucune ne semble l'avoir compris.

J'ai essayé tout ce que je pouvais, ferme était le mauvais suivant

function sendValue(requestArray, requestAction){ 
$.post("requests.php", { request: requestAction, 'requestArray[]': function() { $.each(requestArray, function(key, value) { return key: value; }); } }, function(data){ $('#display').html(data.returnFromValue); 

}, "json"); 
} 

arbre, aboyer? J'ai depuis obtenu ceci pour travailler en sérialisant le quel était le requestArray et en passant à PHP pour être pars_str, mais n'importe quel guideance pourrait bien aider à obtenir ceci comme je le voulais.

Répondre

1

À l'heure actuelle, il semble que vous transmettez une fonction en tant que paramètre de demande. Je vais juste retirer ce code et assembler votre carte d'abord, puis passer à la fonction de publication. Si vous voulez vraiment qu'ils restent dans une carte au lieu de les aplatir, essayez quelque chose comme ça. Je ne suis pas sûr que PHP le gère automatiquement, mais vous pourriez peut-être écrire du code PHP pour assembler vous-même la carte.

function sendValue(requestArray, requestAction){ 
    var requestParameters = {}; 
    requestParameters["request"] = requestAction; 
    $.each(requestArray, function(key, value) { 
     requestParameters["requestArray[" + key + "]"] = value; 
    }); 
    $.post("requests.php", requestParameters, function(data){ $('#display').html(data.returnFromValue); }, "json"); 
} 
0

Pour autant que je sache, si vous ajoutez des crochets à une entrée de forme, PHP attendre à ce que la clé pour contenir un sous-réseau à plat, donc:

<input name="foo[]" value="blahblah"/> 
<input name="foo[]" value="blahblah"/> 

va donner un tableau comme :

array("foo" => array("blahblah", "blahblah")); 

Je ne pense pas qu'il est possible d'avoir de nombreuses paires clé/valeur au sein de votre requestArray[], comme ce que vous essayez de faire, par exemple, pour obtenir sur le serveur quelque chose comme:

array("foo" => array("bar" => "baz, "hehe" => "hahah")) 

donc je pense que votre approche qui implique sérialisation le sous-réseau sur le client et l'analyse sur le serveur, dans ce cas, semble être la bonne.