Wie kann ich ein JSON-Objekt an eine Webmethode mit jQuery senden?
Antworten
Zu viele Anzeigen?Bitte beachten Sie este Artikel von Dave Ward. Es ist ein komplettes Tutorial über dieses Zeug zu tun. Auch finden Sie dort andere große jquery/ASP.net Zeug.
EDIT:- Dave ruft die Methode ohne Argumente auf, Sie können die leere Daten Eigenschaft mit den tatsächlichen Daten, die Sie senden möchten:
$.ajax({
type: "POST",
url: "Default.aspx/GetDate",
data: "{'name':'tiger1','hobbies':['reading','music']}",//PUT DATA HERE
contentType: "application/json; charset=utf-8",
dataType: "json",
WebMethods erwarten eine Zeichenkette, die JSON enthält, das auf der Serverseite geparst wird. JSON.stringify
Funktion zur Konvertierung einer Parameter Objekt in eine Zeichenkette umzuwandeln und die Daten zu senden, habe ich eine Funktion wie diese:
jQuery.executePageMethod = function(location, methodName, methodArguments,
onSuccess, onFail) {
this.ajax({
type: "POST",
url: location + "/" + methodName,
data: JSON.stringify(methodArguments), // convert the arguments to string
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data, status) {
var jsonData = JSON.parse(data.d);
onSuccess(jsonData, status);
},
fail: onFail
});
};
Ich empfehle Ihnen, die json2.js Parser in Ihre Seiten einbauen, um die JSON.stringify-Funktion browserübergreifend verfügbar zu machen.
Eine weitere Bibliothek, die Sie verwenden können, ist die jquery-json
Bibliothek . Einmal eingeschlossen:
var json = $.toJSON(your_object);
Die praktischsten Lösungen, die ich gesehen habe, vereinfachen dies durch die Verwendung von die Open-Source-Software JSON2.js Bibliothek zum Parsen und 'Stringifizieren' komplexer Objektdaten.
Diese beiden ausgezeichneten Artikel gehen ins Detail:
-
Verwendung komplexer Typen, um den Aufruf von Diensten weniger komplex zu machen von Dave Ward.
-
JavaScript-Arrays über JQuery Ajax zu einer Asp.Net WebMethode von Chris Brandsma.
Der zweite Artikel könnte für Sie besonders relevant sein, auch wenn er ein Web Dienstleistung Methode mit der folgenden Signatur ...
public void SendValues(List<string> list)
... es demonstriert, wie man die JSON2.js-Bibliothek verwendet, um eine List<string>
in Javascript (mit jQuery, dieses Beispiel ist direkt aus dem zweiten Artikel übernommen):
var list = ["a", "b", "c", "d"]; var jsonText = JSON.stringify({ list: list }); // The 'list' is posted like this $.ajax({ type: "POST", url: "WebService1.asmx/SendValues", data: jsonText, contentType: "application/json; charset=utf-8", dataType: "json", success: function() { alert("it worked"); }, failure: function() { alert("Uh oh"); } });
Verwenden Sie einfach Ihre Webmethod-URL anstelle der des Webdienstes.
- See previous answers
- Weitere Antworten anzeigen