2011-11-10 2 views
1

Je ne peux pas retourner javascript objet à la méthode web à travers appel ajax comme ci-dessous:objet De retour à la méthode de service Web ajax

var person = {"FirstName":"Foo","LastName":"Bar"}; 

$.ajax({ 
    type: "POST", 
    url: url, 
    data: person, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    onSuccess: function() { alert('Success!'); }, 
    onError: function() { alert('Error'); } 
}); 

est non valide JSON primitive jeté avec la méthode ci-dessus. je voudrais de recourir à la manipulation de chaînes comme ceci:

var person = {"FirstName":"Foo","LastName":"Bar"}; 
var json = '{person:' + JSON.stringify(person) + '}'; 

$.ajax({ 
    type: "POST", 
    url: url, 
    data: json, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    onSuccess: function() { alert('Success!'); }, 
    onError: function() { alert('Error'); } 
}); 

Maintenant, cela fonctionne très bien, je peux sortir avec cette solution, mais la vie est difficile, nous ne voulons pas plus difficile! S'il y a un moyen de passer l'objet que j'aimerais directement l'entendre;)

+0

Quel type d'erreur avez-vous? D'abord, un exemple fonctionne bien. – Oyeme

+0

@Oyeme: il lance "JSON primitif invalide: FirstName blahh" .. Il a besoin d'un wrapper Person pour reconstruire l'objet, d'où la manipulation de la chaîne .. Cela a fonctionné sur votre machine ?? – Kagawa

+0

Oui, cela fonctionne. Vous avez corrigé le format JSON {"FirstName": "Foo", "LastName": "Bar"}; – Oyeme

Répondre

0

var json = '{personne:' + JSON.stringify (personne) + '}'; Fait le travail :)

1

La raison est probable que ceci:

data: person 

envoie fait ceci:

FirstName=Foo&LastName=Bar 

parce que jQuery décompose cet objet en un ensemble clé/valeur compatible POST. La raison pour laquelle votre deuxième version fonctionne est parce qu'elle envoie une vraie chaîne JSON. Si vous deviez le faire:

data: JSON.stringify(person) 

Cela fonctionnerait probablement.

+0

Merci d'avoir signalé que jQuery décompose l'objet en ensemble clé/valeur! Mais les données: JSON.stringify (personne) ne fonctionnent toujours pas. Il lance maintenant "Impossible de convertir l'objet en type 'System.Collections.Generic.IDictionary [System.String.System.Object]'" – Kagawa

Questions connexes