私の WebMethod は次のようになります。
[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json, UseHttpGet=true)]
public List<Person> HelloWorld(string hello)
{
List<Person> persons = new List<Person>
{
new Person("Sarfaraz", DateTime.Now),
new Person("Nawaz", DateTime.Now),
new Person("Manas", DateTime.Now)
};
return persons;
}
そして、jQueryを次のように使用してこのメソッドを呼び出そうとしています:
var params={hello:"sarfaraz"}; //params to be passed to the WebMethod
$.ajax
({
type: "GET", //have to use GET method
cache: false,
data: JSON.stringify(params),
contentType: "application/json; charset=utf-8",
dataType: 'json',
url: "http://localhost:51519/CommentProviderService.asmx/HelloWorld",
processData: true,
success: onSuccess,
error: onError //it gets called!
});
しかし、うまくいきません。onSuccess
コールバックを呼び出す代わりに、次のようonError
に使用するものを呼び出しますalert
。
alert(response.status + " | " + response.statusText + " | " + response.responseText + " | " + response.responseXML );
これはこれを印刷します:
500 | 内部サーバー エラー | {"メッセージ":"無効な Web サービス呼び出し、パラメーターの値がありません: \u0027hello\u0027." ,"StackTrace":" System.Web.Script.Services.WebServiceMethodData.CallMethod (オブジェクト ターゲット、IDictionary
2 parameters)\r\n at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary
2 パラメーター) で\r\n System.Web.Script.Services.RestHandler.InvokeMethod (HttpContext コンテキスト、WebServiceMethodData methodData、IDictionary) で`2 rawParams)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"} | 未定義
このエラーが発生する理由がわかりません。
POST
メソッドと makeを使用するように jQuery 呼び出しを変更するとUseHttpGet=false
、うまく機能します。しかし、私はそれが動作するようにしたいGET
. 何を修正する必要がありますか?