2010-08-03 6 views
1

J'ai besoin d'obtenir des données postdata à partir d'un formulaire et l'envoyer via ajax.
Le code est donné ci-dessous:Obtention id d'un élément html en utilisant jquery

var $fields = $('#myform :input').serializeArray(); 
var values = {} 
jQuery.each($fields, function(i, field) 
{ 

        values[field.name] = field.value 

}); 
myJson = JSON.stringify(values); 

Maintenant, au lieu de values[field.name] Je veux id de l'élément à clé de postadata à envoyer. J'ai essayé values[$(this).attr('id')] = field.value mais, Ça ne fonctionne pas. Toute aide sera précieuse

Répondre

0

Vous pouvez utiliser les éléments suivants:

var values = {}; 
    $("#myform :input").each(function(i, field) { 
      values[field.id] = field.value; 

    }); 

    var str = (JSON.stringify(values)); 
1

insted de cette

var $fields = $('#myform :input').serializeArray(); 

faire ce

var $fields = $('#myform :input').map(function(){ 
    return {'id': this.id, 'value': this.value} 
}).get(); 

et faire attention à la $ sur la variable $fields.

0

aussi vous pouvez le faire

var values = {} 
$('#myform :input').each(index){ 
    values[$(this).attr('name')]=$(this).attr('id') 
} 
myJson = JSON.stringify(values); 
0

Ne pas sérialiser le tableau. Je suppose que vous supprimez les propriétés des éléments dom de cette façon.

Essayez d'utiliser à la place:

var values = new Array(); 

//this way you'll get an array of DOM-elements with all their properties 
jQuery('#myform :input').each(function(){ 
    $this = jQuery(this); //I do this to make the later code more readable, can be omitted 

    values[$this.attr('id')] = $this.val(); 
}); 
Questions connexes