2017-01-30 4 views
-2

私はこのフォーラムに以下のような複数のクエリが存在することを知っていますが、私のケースでは正確に何が間違っているのかわかりませんでした。jQuery AjaxがC#Webmethodを呼び出さない

$.ajax({ 
    type: "POST", 
    url: "default.aspx/GetMaturityValues", 
    data: jsonParams, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (response) { 
     alert(response); 
    }, 
    failure: function (response) { 
     alert(response.d); 
    } 
}); 
[System.Web.Services.WebMethod] 
public static string GetMaturityValues(string countryIDList, string xAxis, string yAxis, string bubbleSize) 
{ 
    //some code 
} 

実行は、C#コードに流入されません。

jsonParams:

var paramList = ''; 
var countryIDList = '1,2,3,5'; 
var xAxis = '1'; 
var yAxis = '2'; 
var bubbleSize = '6'; 
paramList += 'countryIDList' + '":"' + countryIDList; 
paramList += 'xAxis' + '":"' + xAxis; 
paramList += 'yAxis' + '":"' + yAxis; 
paramList += 'bubbleSize' + '":"' + countryIDList; 
paramList = '{' + paramList + '}'; 
var jsonParams = JSON.stringify(paramList); 
+0

* C#コードに流入していない*それは正確にはどういう意味ですか?あなたはajaxをC#に翻訳しますか? – RandomStranger

+0

Ajaxコードが目的のメソッドを呼び出していません。 – Rohit

+0

失敗応答には何が入っていますか? – A3006

答えて

2

私は、あなたが投稿したときにパラメータが正しくフォーマットされていないという問題があると思います。

<script type="text/javascript"> 
    var params = {}; 
    params.countryIDList = "test"; 
    params.xAxis = "x"; 
    params.yAxis = "y"; 
    params.bubbleSize = "y"; 

    $.ajax({ 
     type: "POST", 
     url: "Test1.aspx/GetMaturityValues", 
     data: JSON.stringify(params), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
      alert(response); 
     }, 
     failure: function (response) { 
      alert(response.d); 
     } 
    }); 
</script> 

@DarinDimitrovは(もちろん)あなたがモデルクラスを作るから利益を得ることができるということが正しいです...しかし、あなたは、それが同様にちょうど刺すパラメータで動作させることができます。この簡単な回避策を試してみてください。

4

は、モデルを使用してみてください:

:最終的には、クライアント上と

[System.Web.Services.WebMethod] 
public static string GetMaturityValues(MyModel model) 
{ 
    //some code 
} 

を:あなたのWebMethod属性をパラメータとして取る

public class MyModel 
{ 
    public IList<int> CountryIDList { get; set; } 
    public int XAxis { get; set; } 
    public int YAxis { get; set; } 
    public int BubbleSize { get; set; } 
} 

var paramList = { 
    countryIDList: [1, 2, 3, 5], 
    xAxis: 1, 
    yAxis: 2, 
    bubbleSize: 6 
}; 

var jsonParams = JSON.stringify({ model: paramList}); 

$.ajax({ 
    type: "POST", 
    url: "default.aspx/GetMaturityValues", 
    data: jsonParams, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (response) { 
     alert(response); 
    }, 
    failure: function (response) { 
     alert(response.d); 
    } 
}); 
この例では

すべてのパラメータは、整数であり、あなたはもちろん、例えば、文字列のような他のデータ型を使用することができ買う:

に応じて、クライアントから文字列として渡すことができ
public class MyModel 
{ 
    ... 
    public string Foo { get; set; } 
} 

var paramList = { 
    ... 
    foo: 'bar' 
}; 
+0

'var jsonParams = JSONにする必要があります。 stringify({"model":paramList}); 'WebMethod'を使用しているときにパラメータバインディングが機能するようにする – user1429080

+0

あなたは正しいです、あなたの発言を反映するように私の答えを更新します。 –

関連する問題