2010-07-13 4 views
0
// Initialize the object, before adding data to it. 
var NewPerson = new Object(); 

NewPerson.FirstName = $("#FirstName").val(); 
NewPerson.LastName = $("#LastName").val(); 
NewPerson.Address = $("#Address").val(); 
NewPerson.City = $("#City").val(); 
NewPerson.State = $("#State").val(); 
NewPerson.Zip = $("#Zip").val();  

En réalité, je remplis et envoie un tableau d'objets NewPerson. J'utilise toutes les propriétés dans mon javascript, mais quand je fais appel ajax comme ci-dessous, je veux seulement envoyer deux des propriétés pour dire FirstName et LastNameEnvoyer seulement quelques propriétés d'objets dans un tableau dans un appel ajax avec jQuery

$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "PersonService.asmx/AddPerson", 
    data: "{'NewPerson':" + JSON.stringify(NewPerson) + "}", 
    dataType: "json" 
}); 

REMARQUE: J'utilise un tableau pas un seul objet de NewPerson. Le code ci-dessus est juste par exemple.

Répondre

1

Vous pouvez facilement écrire une fonction pour y parvenir:

function extractMembers(arr, members) 
{ 
    var m, o, i, j; 
    var output = []; 
    for (i = 0; i < arr.length; ++i) { 
     o = {}; 
     for (j = 0; j < members.length; ++j) { 
      m = members[j]; 
      o[m] = arr[i][m]; 
     } 
     output.push(o); 
    } 
    return output; 
} 

Maintenant, vous pouvez utiliser la fonction comme ceci:

var objects = [{FirstName: "...", LastName: "...", Address: "..."}, 
       {FirstName: "...", LastName: "...", Address: "..."}] 

var toSend = extractMembers(objects, ["FirstName", "LastName"]); 

Encore une chose: Vous pouvez utiliser la notation abrégée pour créer des objets en JavaScript:

var NewPerson = { 
    FirstName: $("#FirstName").val(), 
    LastName: $("#LastName").val(), 
    ... 
}; 
+0

@Ferdinand, ce dernier exemple ne fonctionnera pas. Vous devez utiliser des chaînes comme clés. –

+0

@Jacob Relkin: Ce n'est pas vrai .... vous confondez ceci avec JSON valide où les clés doivent en effet être des chaînes entre guillemets doubles. –

+0

+1 J'ai aimé votre réponse. Merci beaucoup. :) – IsmailS

1

Malheureusement, vous ne pouvez pas dire JSON.stringify propriétés d'un objet/tableau que vous voulez analyser et qui ne le sont pas. Si vous avez vraiment besoin de créer l'objet NewPerson "manuellement", vous devez filtrer les valeurs que vous voulez envoyer vous-même. Une meilleure approche semble être la méthode .serialize() ou .serializeArray(). Les deux liront les éléments input d'un élément form, mais uniquement ceux qui possèdent une propriété name=. Donc, vous pouvez juste donner #FirstName et #LastName une propriété name.

Référence: .serializeArray(), .serialize()

+0

Merci @jAndy pour la réponse. L'affectation des valeurs dans l'objet NewPerson est factice. En réalité, il y a beaucoup plus dans mon code. Appréciez que vous n'avez pas essayé de répondre à la question plutôt que de regarder le plus gros problème pour le résoudre. Merci encore. – IsmailS

Questions connexes