我的 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 | 内部服务器错误 | {"Message":"无效的 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 在 System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"} | 不明确的
我不明白为什么我会收到这个错误。
如果我将 jQuery 调用更改为使用POST
method 和 make UseHttpGet=false
,那么效果很好。但我希望它与GET
. 需要修复什么?