Après tableau de chaînes de caractères pour le web méthode de l'API
c'est mon côté client appel ajax:
var list = ["a", "b", "c", "d"];
var jsonText = { data: list };
$.ajax({
type: "POST",
url: "/api/scheduledItemPriceStatus/updateStatusToDelete",
data: jsonText,
dataType: "json",
traditional: true,
success: function() { alert("it worked!"); },
failure: function() { alert("not working..."); }
});
c'est chrome-tête de réseau:
Request URL:http://localhost:2538/api/scheduledItemPriceStatus/updateStatusToDelete
Request Method:POST
Request Headersview source
Accept:application/json, text/javascript, */*; q=0.01
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:27
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Host:localhost:2538
Origin:http://localhost:2538
Referer:http://localhost:2538/Pricing/ScheduledItemPrices
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
X-Requested-With:XMLHttpRequest
Forme Dataview URL encodé
data:a
data:b
data:c
data:d
c'est mon webapi méthode de contrôleur:
public HttpResponseMessage UpdateStatusToDelete(string[] data)
résultat:
quand je debug, le paramètre de données dans UpdateStatusToDelete retourne {string[0]}
au lieu de données:
données:b
données:c
data:d
Ce que je fais mal? Toute aide est très apprécié.
Hmmm, je pense que vous devriez passer directement de la
n'est que la première ligne de la compilation..? var liste = ["a", "b", "c", "d"]? il devrait en être ainsi
Ro regarde mon commentaire avez-vous une faute de frappe..? aussi êtes-vous sûr que le code compile..?
list
variable comme le champ de données dans votre appel ajax. Maintenant, il semble que vous êtes de passage d'un objet qui a un tableau de chaînes de caractères en tant que membre champ appelé "données".n'est que la première ligne de la compilation..? var liste = ["a", "b", "c", "d"]? il devrait en être ainsi
string[] list = {"a", "b", "c", "d"};
Ro regarde mon commentaire avez-vous une faute de frappe..? aussi êtes-vous sûr que le code compile..?
OriginalL'auteur Eunyoung Ro | 2013-01-08
Vous devez vous connecter pour publier un commentaire.
Pour passer simplement des types, les données de poste doit prendre la forme d'une paire nom /valeur avec le nom de la partie d'être une chaîne vide. Si vous avez besoin de faire l'appel Ajax comme suit:
En outre, sur votre site Web API d'action, de les annoter w/[FromBody] attribut. Quelque chose comme:
Cela devrait faire l'affaire.
Je reçois toujours une des valeurs null pour les valeurs à l'aide de cette approche. l'un est Mon API Non paramètres corporels. Quelque chose comme " public void Post( string id, [FromBody]string[] valeurs)
OriginalL'auteur Mark Berryman
Vous devriez passer l'
list
lui-même, et pas à n'importe quel autre objet enveloppant.E. g. transmettre le suivant:
dans
Votre signature de la méthode sur le serveur est correct.
OriginalL'auteur Shaulian
utilisation
var jsonText = { data: JSON.stringify(list)}
oui [] devrait être {}
OriginalL'auteur Cris
Dans le backend, vous pouvez utiliser
FormDataCollection.GetValues(string key)
pour retourner un tableau de chaînes de caractères pour ce paramètre.OriginalL'auteur Stelian Matei
utiliser la méthode ci-dessus pour envoyer tableau, comme suggéré par les cris de votre appel ajax jquery.
Les données JSON est généralement en valeur de la clé de la paire.
Vous pouvez également effectuer ci-dessus en utilisant tableau à deux dimensions
En outre faire dans le webapi projet.
sous le dossier de modèles dans votre projet d'api web créer un fichier de classe. Éventuellement class1.cs.
Créer 4 propriétés
Désormais le faire dans votre contrôleur
Je suis sûr que cela va fonctionner.
OriginalL'auteur Gaurav Shah
Réglage du type de données ne sera pas vous aider.
C'est comment je le fais :
La Partie Serveur
Références
jQuery.ajax()
OriginalL'auteur Sergey