Wie nennen webmethod in Asp.net C#
Möchte ich nennen, eine web-Methode im asp.net c# - Anwendung mit dem folgenden code
Jquery:
jQuery.ajax({
url: 'AddToCart.aspx/AddTo_Cart',
type: "POST",
data: "{'quantity' : " + total_qty + ",'itemId':" + itemId + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
beforeSend: function () {
alert("Start!!! ");
},
success: function (data) {
alert("a");
},
failure: function (msg) { alert("Sorry!!! "); }
});
C# - Code:
[System.Web.Services.WebMethod]
public static string AddTo_Cart(int quantity, int itemId)
{
SpiritsShared.ShoppingCart.AddItem(itemId, quantity);
return "Add";
}
Aber es rufen immer page_load. Wie kann ich es beheben?
- Von wo aus machst du das ajax-call?
- sehr seltsam. deren page_load aufgerufen wird? AddToCart.aspx?
- Ja,rufen Sie AddToCart.aspx/Page_load
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es durchaus ein paar Elemente der
$.Ajax()
, die Probleme verursachen können, wenn Sie nicht richtig definiert. Ich würde vorschlagen, nach dem umschreiben des Ihr javascript in seiner einfachsten form, werden Sie wahrscheinlich feststellen, dass es gut funktioniert.Skript Beispiel:
WebMethod Beispiel:
Dies ist ein bisschen spät, aber ich habe gerade stolperte über dieses problem, zu lösen versuchen mein eigenes problem dieser Art. Dann erkannte ich, dass ich hatte diese Zeile in der ajax post falsch:
Sollte es sein:
Sowie die WebMethod zu:
Und diese gelöst mein problem.
Hoffe, es kann helfen, jemand anderes als gut.
Ich bin mir nicht sicher, warum das nicht funktioniert, Es funktioniert gut auf meinem test. Aber hier ist eine alternative Technik, die helfen könnten.
Anstelle von aufrufen der Methode, in der die AJAX-url, verwenden Sie einfach die Seite .aspx-url, und fügen Sie die folgende Methode, die als parameter in den Daten-Objekt. Dann, wenn es fordert, page_load, werden Ihre Daten in die Anfrage.Form-variable.
jQuery
C# Laden Der Seite:
Ein problem hierbei ist, dass Ihre Methode erwartet int-Werte, während Sie vorbei string aus der ajax-call. Versuchen, es zu ändern, um string und parse innerhalb des webmethod-falls erforderlich :
Bearbeiten : oder Pass int-Parameter von ajax-call.
Das problem ist bei
[System.Web.Services.WebMethod]
fügen Sie[WebMethod(EnableSession = false)]
und Sie loswerden konnte Seite Leben Zyklus, standardmäßig EnableSession ist wahr, in der Seite und machen die Seite zu kommen im Leben, wenn life-cycle-events..Entnehmen Sie bitte unten der Seite für mehr details
http://msdn.microsoft.com/en-us/library/system.web.configuration.pagessection.enablesessionstate.aspx
Necro ' Ing diese Frage 😉
Müssen Sie ändern die Daten gesendet werden, als Stringified JSON, so können Sie Modularisieren der Ajax-Aufruf in einer einzigen Funktion unterstützt.
Erste Schritt: Extrahieren von Daten Konstruktion
Zweite Schritt: Verallgemeinern WebMethod
Dritter Schritt: Nennen Sie es, wo Sie es brauchen
Diese aufgerufen werden können, einfach überall, JS-Datei, HTML-Datei oder Server-side-Konstruktion.
müssen Sie
JSON.stringify
diedata parameter
vor dem versenden.Hier ist Ihre Antwort.
verwenden
Javascript :
und Ihr C# - Methode sollte
Aus jedem der Schaltfläche
click
oder andere html-controlevent
Sie anrufen können, um diejavascript
- Methode mit dem parameter, die wiederum die Aufrufe an diewebmethod
um den Wert injson
format.