Ajout/push() Valeurs Ajax POST en jQuery serialize() ou serializeArray()
jQuery
$('#speichern').live('click' , function () {
// [a] var data_save = $('#form_rechn').serializeArray();
var data_save_ser = $('#form_rechn').serialize(); //[b]
// [a] data_save[data_save.length] = {"name":"action","value":"save" },{"name":"total","value": Number($('#grandTotal').text().replace(/EUR/g, ""))};
var addintional = 'action=save&mysql=update' + '&' + 'total=' + Number($('#grandTotal').text().replace(/EUR/g, ""));//[b]
var data_save = data_save_ser + '&' + addintional;//[b]
$.ajax({
type : "POST",
cache : false,
url : 'invoice_new_action.php',
data : data_save,
error:function (xhr, ajaxOptions, thrownError){
alert(xhr.status);
alert(thrownError);
},
success : function(data) {
$.fancybox(data);
}
});
});
[B]-partie fonctionne très bien, mais pourquoi ne pas travailler le [a]-partie? Ce n'est pas poussé:
,{"name":"total","value": [..]
php de Sortie via print_r ($_POST)
[b]-version
Array ( [pnr_item_1] => 1 [pkt_item_1] => HostingXXL [desc_item_1] => 20GB, 1x.de [qty_item_1] => 4 [price_item_1] => 15.5 .... [action] => save [mysql] => update [total] => 62 )
[a]-version
Array ( [pnr_item_1] => 1 [pkt_item_1] => HostingXXL [desc_item_1] => 20GB, 1x.de [qty_item_1] => 4 [price_item_1] => 15.5 .... [action] => save )
J'espère que mon problème/la question est claire.
Quelle est la meilleure méthode?
Il y a de meilleures méthodes pour donc id?
OriginalL'auteur hoerf | 2010-12-15
Vous devez vous connecter pour publier un commentaire.
Il devrait ressembler à ceci:
Ce que vous voulez pour la pousser sur le tableau sont des objets sous la forme de
{name: "name", value: "value"}
, puis ils vont être sérialisé/codé correctement. Option[a]
(la forme corrigée) est généralement beaucoup mieux que l'option[b]
, depuis[b]
n'est pas bien codé, et ne pourra pas le moment de tout caractère non valide se glisse là pour gâcher vos variables. Dans ce cas, parce que vous êtes en contrôle de la ajouté de contenu, vous êtes en sécurité...mais il est préférable de suivre la voie qui fonctionne toujours: jamais de la création de votredata
en argument une chaîne de caractères directement.Comme pour le pourquoi
[a]
ne fonctionne pas:Ce n'est pas valide, vous ne pouvez pas affecter de 2 choses à la fois, vous devez faire comme ceci:
ou ce (ma méthode préférée, utilisé ci-dessus):
....ou, utilisez
$.merge()
(un peu plus de gaspillage, mais propres à la recherche), comme ceci:oh oui, fais ceci:
var arr = $('#form1').serializeArray(); $.merge(arr, $('#form2').serializeArray());
, puisarr
aura le contenu des deux, simplement utiliser pour votredata
argument.OriginalL'auteur Nick Craver
Vous pouvez combiner à la fois les formes et les serializeArray
.serialize()
OriginalL'auteur Shaishav Shah