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对象。