まず、[ScriptService]
AJAXを介して呼び出せるように、クラスにタグを付けていることを確認してください。何かのようなもの:
[ScriptService] //<-- Important
public class WebService : System.Web.Services.WebService
{
[ScriptMethod] //<-- WebMethod is fine here too
public string[] MyMethod()
{
return new[] {"fdsf", "gfdgdfgf"};
}
}
その後、何も解析する必要がないため、 jQueryを使用して結果を直接読み取ることができます。
$(document).ready(function() {
$.ajax({
type: "POST",
url: "WebService.asmx/MyMethod",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
// msg.d will be your array with 2 strings
}
});
});
別のアプローチは、以下への参照を含めることです。
<script src="WebService.asmx/js" type="text/javascript"></script>
これにより、プロキシクラスが生成され、Webメソッドを直接呼び出すことができます。例えば:
WebService.MyMethod(onComplete, onError);
このonComplete
関数は、Webサービス呼び出しの結果を含む単一のパラメーター(この場合は2つの文字列を持つJavascript配列)を受け取ります。私の意見では、これはjQueryを使用してURLとHTTPペイロードについて心配するよりも簡単な解決策です。