17

次のコードを使用して、asp.net c# アプリケーションで Web メソッドを呼び出したい

Jクエリ:

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# コード:

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

ただし、常に page_load を呼び出します。どうすれば修正できますか?

4

8 に答える 8

17

$.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);
    }
});

Web メソッドの例:

[WebMethod]
public static string TestMethod(string message)
{
     return "The message" + message;
}
于 2014-08-12T10:36:48.743 に答える
9

これは少し遅れていますが、この種の問題を解決しようとして、この問題に出くわしました。次に、ajax の投稿に次の行が間違っていることに気付きました。

data: "{'quantity' : " + total_qty + ",'itemId':" + itemId + "}",

そのはず:

data: "{quantity : '" + total_qty + "',itemId: '" + itemId + "'}",

WebMethod と同様に、次のことを行います。

public static string AddTo_Cart(string quantity, string itemId)

そして、これは私の問題を解決しました。

それが他の誰かにも役立つことを願っています。

于 2014-11-08T21:55:35.330 に答える
0

送信する前にJSON.stringify必要です。data parameter

于 2014-10-21T23:26:23.803 に答える
0

問題は にあり[System.Web.Services.WebMethod]、追加する[WebMethod(EnableSession = false)]と、ページのライフサイクルを取り除くことができます。デフォルトでは、EnableSession は Page で true であり、ライフサイクルイベントを通じてページが有効になります。

詳細については、以下のページを参照してください http://msdn.microsoft.com/en-us/library/system.web.configuration.pagessection.enablesessionstate.aspx

于 2014-08-15T14:47:15.500 に答える
0

ここでの問題の 1 つは、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";
}

編集: または ajax 呼び出しから int パラメーターを渡します。

于 2013-10-01T08:31:36.403 に答える
0

なぜうまくいかないのかわかりませんが、私のテストでは問題なく動作します。しかし、ここに役立つかもしれない別のテクニックがあります。

AJAX url でメソッドを呼び出す代わりに、ページ .aspx url を使用して、データ オブジェクトのパラメータとしてメソッドを追加します。次に、page_load を呼び出すと、データが Request.Form 変数に格納されます。

jQuery

jQuery.ajax({
    url: 'AddToCart.aspx',
    type: "POST",
    data: {
        method: 'AddTo_Cart', quantity: total_qty, itemId: itemId
    },
    dataType: "json",
    beforeSend: function () {
        alert("Start!!! ");
    },
    success: function (data) {
        alert("a");
    },
    failure: function (msg) { alert("Sorry!!! "); }
});

C# ページの読み込み:

if (!Page.IsPostBack)
{
    if (Request.Form["method"] == "AddTo_Cart")
    {
        int q, id;
        int.TryParse(Request.Form["quantity"], out q);
        int.TryParse(Request.Form["itemId"], out id);
        AddTo_Cart(q,id);
    }
}
于 2013-10-01T19:45:17.563 に答える
-1

これがあなたの答えです。使用する

                   jquery.json-2.2.min.js 
                      and
                   jquery-1.8.3.min.js

Javascript :

function CallAddToCart(eitemId, equantity) {
   var itemId = Number(eitemId);
   var quantity = equantity;
   var dataValue = "{itemId:'" + itemId+ "', quantity :'"+ quantity "'}" ;
    $.ajax({
           url: "AddToCart.aspx/AddTo_Cart",
           type: "POST",
           dataType: "json",
           data: dataValue,
           contentType: "application/json; charset=utf-8",
           success: function (msg) {
                alert("Success");
           },
           error: function () { alert(arguments[2]); }      
        });
 }

C# Web メソッドは次のようになります。

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string AddTo_Cart(int itemId, string quantity)
{
   SpiritsShared.ShoppingCart.AddItem(itemId, quantity);      
  return "Item Added Successfully";
}

任意のボタンclickまたはその他の HTML コントロールから、パラメータを使用しeventてメソッドを呼び出すことができます。このメソッドは、次に を呼び出して、値をフォーマットで取得します。javascriptwebmethodjson

于 2013-12-13T04:04:04.070 に答える