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)
这有点晚了,但我只是偶然发现了这个问题,试图解决我自己的问题.然后我意识到我在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)
这解决了我的问题.
希望它对其他人也有帮助.
这里的一个问题是,当您从 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参数。
| 归档时间: |
|
| 查看次数: |
84703 次 |
| 最近记录: |