Jquery – 使用POST请求,这是不允许的错误

我想让jquery与Web服务进行通信!

function Test(item) { $.ajax({ type: 'POST', url: 'WebService.asmx/Test', data: '{ "Item" : "' + item + '" }', contentType: 'application/json; charset=utf-8', dataType: 'json', success: function (msg) { alert("oi"); }, error: function (msg) { alert('Get Details Failure: ' + msg); } }); }; using System.Web; using System.Web.Services; using System.Data.SqlClient; using System.Web.Script.Services; using System.Web.Script.Serialization; [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] [ScriptService] public class WebService : System.Web.Services.WebService { public WebService () {} [System.Web.Services.WebMethod] [System.Web.Script.Services.ScriptMethod(UseHttpGet = true, ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)] public string Test(string Item) { JavaScriptSerializer js = new JavaScriptSerializer(); string strJSON = js.Serialize(Item); return strJSON; } 

我收到以下消息:

 {"Message":"An attempt was made to call the method \u0027Test\u0027 using a POST request, which is not allowed.","StackTrace":" at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"} 

您的Web服务方法标有ScriptMethodAttribute ,指定UseHttpGet = true 。 尝试删除此参数,或将其设置为false 。 这是阻止POST工作的原因。

那么,使用GET请求,然后(或更改webservice方法接受POST)

 function Test(item) { $.ajax({ type: 'GET', url: 'WebService.asmx/Test', data: {Item: item }, /* note change here, data is NOT a string! */ contentType: 'application/json; charset=utf-8', dataType: 'json', success: function (msg) { alert("oi"); }, error: function (msg) { alert('Get Details Failure: ' + msg); } }); }; 

请注意, data参数不是字符串(具体而言,它不是JSON)。 您应该传递一个JavaScript对象。