ajax 呼び出しが突然機能しなくなりましたが、その理由がわかりません。何が表示されないのですか?
回答: 電源が切れていたためASP.NET State Server
です。
これが私のWebメソッドです
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string Test(string message)
{
return message;
}
そして、ここに私のajax呼び出しがあります
$.ajax({
url: '/Test.asmx/Test',
data: {message:'hello'},
type: "POST",
async: true,
contentType: "application/json; charset=UTF-8",
dataType: "json",
beforeSendMethod: function (xhr) {
xhr.setRequestHeader("Content-type", "application/json; charset=utf-8");
},
success: function (data, textStatus, jqXHR) {
console.log('success!',data, textStatus, jqXHR);
},
error: function (data, textStatus, jqXHR) {
console.log('error!',data, textStatus, jqXHR);
}
});
これが私のエラーです
Message: Invalid web service call, missing value for parameter: 'message'.
StackTrace: at System.Web.Script.Services.WebServiceMethodData.CallMethod(Object target, IDictionary`2 parameters)
at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary`2 parameters)
at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)
at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)
ExceptionType: System.InvalidOperationException
これを行うと機能します:
$.ajax({
url: '/Services/Authentication.asmx/Test',
data: {message:'hello'},
type: "POST",
success: function (data, textStatus, jqXHR) {
console.log('success!',data, textStatus, jqXHR);
},
error: function (data, textStatus, jqXHR) {
console.log('error!',data, textStatus, jqXHR);
}
});
ただし、WebMethod は JSON ではなく XML を返します。
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">hello</string>