Post array von strings, um die web-API-Methode
dies ist mein client-Seite ajax-Aufruf:
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..."); }
});
das ist chrome Netz-header:
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
Form Dataview URL-codiert
data:a
data:b
data:c
data:d
dies ist mein webapi controller-Methode:
public HttpResponseMessage UpdateStatusToDelete(string[] data)
Ergebnis:
wenn ich debug, data-parameter in UpdateStatusToDelete zurück {string[0]}
anstelle der Daten:ein
Daten:b
Daten:c
Daten:d
Was mache ich falsch? Jede Hilfe wird wirklich geschätzt.
- Hmmm, ich denke, Sie sollten eine direkte Weitergabe der
list
variable als Datenfeld in deinem ajax-Aufruf. Gerade jetzt, es sieht aus wie Sie sind übergeben und ein Objekt, welches ein array von strings als Mitglied Feld namens "Daten". - bedeutet, dass die erste Zeile kompilieren..? var list = ["a", "b", "c", "d"]? es sollte wie diese
string[] list = {"a", "b", "c", "d"};
- Ro Blick auf mein Kommentar hast du ein Tippfehler..? auch sind Sie sicher, dass der code kompiliert..?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für die übergabe einfach Typen, die zu sendenden Daten müssen in der form eines name-Wert-paar mit dem Namensteil wird eine leere Zeichenfolge. So müssen Sie den Ajax-Aufruf in etwa so:
Außerdem, auf Ihrer Web-API-Aktion, mit Anmerkungen versehen Sie es w/der [FromBody] - Attribut. So etwas wie:
Sollte den trick tun.
Sollten Sie passieren die
list
selbst, und nicht irgendein anderes Objekt umbrechen.E. g. übergeben Sie den folgenden:
in
Ihre Signatur der Methode auf dem server korrekt ist.
verwenden
var jsonText = { data: JSON.stringify(list)}
Im backend, die Sie nutzen könnten
FormDataCollection.GetValues(string key)
gibt ein array von strings für die parameter.verwenden Sie die oben beschriebene Methode zum senden von Arrays, wie vorgeschlagen, durch cris in Ihre jquery-ajax-call.
JSON-Daten ist in der Regel in Schlüssel-Wert-paar.
Können Sie auch erreichen, die oben mit zwei-dimensionales array
Zusätzlich dazu in der webapi-Projekt.
unter den models Ordner in Ihrem web-api-Projekt erstellen Sie eine Klasse Datei. Möglicherweise class1.cs.
Erstellen 4 Eigenschaften
Nun tun dies in Ihrer Steuerung
Ich bin sicher, dass dies funktionieren wird.
Einstellung der Datentyp wird dir nicht helfen.
Dies ist, wie ich es mache :
Den Server-Teil
Referenzen
jQuery.ajax()