9 Stimmen

JSON an webmethod senden?

Wie kann ich ein JSON-Objekt an eine Webmethode mit jQuery senden?

21voto

TheVillageIdiot Punkte 38840

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",

11voto

Christian C. Salvadó Punkte 763569

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.

6voto

ceejayoz Punkte 170567

Eine weitere Bibliothek, die Sie verwenden können, ist die jquery-json Bibliothek . Einmal eingeschlossen:

var json = $.toJSON(your_object);

5voto

Jeff Sternal Punkte 46528

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:

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.

0voto

lomaxx Punkte 108937

Sie müssten es mit Ajax posten und den eingehenden String in der Webmethode akzeptieren. Dann müssen Sie den JavaScript-Deserialisierer verwenden, um es in ein Objekt auf der Server-Seite zu konvertieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X