Ich habe den folgenden Abfragecode, um eine Webmethode in einer Aspx-Seite aufzurufen
$.ajax({
type: "POST",
url: "popup.aspx/GetJewellerAssets",
contentType: "application/json; charset=utf-8",
data: '{"jewellerId":' + filter + '}',
dataType: "json",
success: AjaxSucceeded,
error: AjaxFailed
});
und hier ist die Signatur der Webmethode
[WebMethod]
public static string GetJewellerAssets(int jewellerId)
{
Das funktioniert gut.
Aber jetzt muss ich zwei Parameter an die Webmethode übergeben
Die neue Webmethode sieht so aus
[WebMethod]
public static string GetJewellerAssets(int jewellerId, string locale)
{
}
Wie ändere ich den Clientcode, um diese neue Methodensignatur erfolgreich aufzurufen?
BEARBEITEN:
Die folgenden 2 Syntaxen haben funktioniert
data: '{ "jewellerId":' + filter + ', "locale":"en" }',
und
data: JSON.stringify({ jewellerId: filter, locale: locale }),
Dabei sind Filter und Gebietsschema lokale Variablen
data: JSON.stringify({ jewellerId: filter, locale: locale })
ist der beste Weg, den ich je gefunden habe. Danke @ChrisCaJSON.stringify
mit einem Objektliteral MÜSSEN Sie den Parameternamen in einen Doppelpunkt einfügen, der in{}
geschweiften Klammern eingeschlossen ist. VerwendenJSON.stringify(objectLiteral)
funktioniert nicht.[WebMethod] [ScriptMethod(UseHttpGet = true)] public static string TestIBAN(string ccc)
?Antworten:
Verwenden Sie keine Zeichenfolgenverkettung, um Parameter zu übergeben, sondern verwenden Sie einfach einen Daten-Hash:
AKTUALISIEREN:
Wie von @Alex im Kommentarbereich vorgeschlagen, erwartet eine ASP.NET-Seitenmethode, dass Parameter in der Anforderung JSON-codiert werden
JSON.stringify
sollte daher auf den Daten-Hash angewendet werden:quelle
JSON.stringify( myObject )
in Betracht , eine JSON-Zeichenfolge aus einem Javascript-Objekt zu erstellen, falls Sie Ihre Parameter später einer Klasse zuordnen möchten.quelle
Fügen Sie dem Datenobjekt einfach so viele Eigenschaften hinzu, wie Sie benötigen.
quelle
data
auf der Serverseite auszulesen ?Verwenden Sie nicht die folgende Methode, um die Daten mit einem Ajax-Aufruf zu senden
Wenn der Benutzer versehentlich ein Sonderzeichen wie ein einfaches oder ein doppeltes Anführungszeichen eingibt, schlägt der Ajax-Aufruf aufgrund einer falschen Zeichenfolge fehl.
Verwenden Sie die folgende Methode, um den Webdienst ohne Probleme aufzurufen
Im obigen Parameter ist der Name des Javascript-Objekts angegeben und wird beim Übergeben an das Datenattribut des Ajax-Aufrufs stringifiziert.
quelle
Hat jemand anderes bemerkt, dass der JSON-String / das JSON-Objekt in allen Antworten außer David Hedlunds ungültig ist? :) :)
JSON-Objekte müssen folgendermaßen formatiert werden: {"key": ("value" | 0 | false)}. Außerdem erfordert das Ausschreiben als Zeichenfolge viel weniger als das Zeichenfolgen des Objekts ...
quelle
quelle
Nur zum Hinzufügen [Diese Zeile funktioniert perfekt in Asp.net und findet Websteuerungsfelder in Jason. Beispiel: <% Fieldname%>]
quelle
quelle
Es geht nur um Daten, die Sie übergeben. muss den String richtig formatieren. Wenn Sie leere Daten übergeben, funktionieren data: {}. Bei mehreren Parametern muss es jedoch richtig formatiert werden, z
....
Daten: dataParam
...
Der beste Weg, dies zu verstehen, besteht darin, einen Fehlerbehandler mit den richtigen Nachrichtenparametern zu haben, um die detaillierten Fehler zu kennen.
quelle
Ich habe erfolgreich mehrere Parameter mit json übergeben
quelle