如何在Asp.net中调用webmethod C#

Bal*_*ary 15 c# asp.net ajax jquery webmethod

我想使用以下代码在asp.net c#application中调用web方法

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!!! "); }
    });
Run Code Online (Sandbox Code Playgroud)

C#代码:

[System.Web.Services.WebMethod]
public static string AddTo_Cart(int quantity, int itemId)
{
    SpiritsShared.ShoppingCart.AddItem(itemId, quantity);      
    return "Add";
}
Run Code Online (Sandbox Code Playgroud)

但它总是调用page_load.我该如何解决?

JDa*_*ips 12

$.Ajax()如果没有正确定义,有很多元素会导致问题.我建议用最基本的形式重写你的javascript,你很可能会发现它工作正常.

脚本示例:

$.ajax({
    type: "POST",
    url: '/Default.aspx/TestMethod',
    data: '{message: "HAI" }',
    contentType: "application/json; charset=utf-8",
    success: function (data) {
        console.log(data);
    },
    failure: function (response) {
        alert(response.d);
    }
});
Run Code Online (Sandbox Code Playgroud)

WebMethod示例:

[WebMethod]
public static string TestMethod(string message)
{
     return "The message" + message;
}
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的起点。由于此示例有效,因此您可以将其逐步更改为所需的内容,并查看出现问题的位置,然后您确切地知道问题所在。 (2认同)

Fre*_*red 8

这有点晚了,但我只是偶然发现了这个问题,试图解决我自己的问题.然后我意识到我在ajax帖子中有这条线错了:

data: "{'quantity' : " + total_qty + ",'itemId':" + itemId + "}",
Run Code Online (Sandbox Code Playgroud)

它应该是:

data: "{quantity : '" + total_qty + "',itemId: '" + itemId + "'}",
Run Code Online (Sandbox Code Playgroud)

以及WebMethod:

public static string AddTo_Cart(string quantity, string itemId)
Run Code Online (Sandbox Code Playgroud)

这解决了我的问题.

希望它对其他人也有帮助.


Zak*_*aki 0

这里的一个问题是,当您从 ajax 调用传递字符串时,您的方法需要 int 值。如有必要,尝试将其更改为字符串并在 webmethod 内进行解析:

[System.Web.Services.WebMethod]
public static string AddTo_Cart(string quantity, string itemId)
{
    //parse parameters here
    SpiritsShared.ShoppingCart.AddItem(itemId, quantity);      
    return "Add";
}
Run Code Online (Sandbox Code Playgroud)

编辑:或从ajax调用传递int参数。