Jquery - 使用POST请求,这是不允许的错误
问题描述:
我想让jquery与Web服务进行通信!Jquery - 使用POST请求,这是不允许的错误
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请求,然后(或更改Web服务方法接受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对象。
尝试使用'GET' – 2012-01-16 17:15:15