メソッドから JSON を返したい場合は、ScriptMethod 属性を使用する必要があります。
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
メソッドを次のように構成します。属性に注意してください。
[WebMethod()]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string MyMethod()
{
}
現時点では、このメソッドは を返してstring
います。これは、構造化された文字列にすることができJSON
ます。ただし、 として解析できるオブジェクトを返す方がよい場合がありますJSON
。List<string>
などの標準的なデータ型を持つクラスと同様にintegers
、strings
これには最適です。その後、そのオブジェクトだけを返すことができます。は、ScriptMethod
それを に変換しJSON
ます。
例えば:
返したいクラス:
public class MyJson
{
public int ID;
public List<string> SomeList;
public string SomeText;
}
そして、入力されたを返すメソッドMyJson
[WebMethod()]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public MyJson MyMethod()
{
MyJson m = new MyJson();
m.ID = 1;
m.SomeText = "Hello World!";
m.SomeList = new List<string>();
m.SomeList.Add("Foo");
m.SomeList.Add("Bar");
return m;
}
リターンJSON
は、クラスと同じように構造化されます。プロパティ名も使用されList<string>
、配列になります
これを AJAX を使用して呼び出します。この場合の JQuery:
$(document).ready(function(){
$.ajax({
type: "POST",
url: "/YourPage.aspx/MyMethod",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
// content will be in here... I.E
var id = msg.d.ID;
var st = msg.d.SomeText;
var sl = msg.d.SomeList;
var i = sl.length;
var firstSlItem = sl[0];
}
});
});