2012-01-16 26 views
7

Tôi đang cố gắng để có được jquery để giao tiếp với một dịch vụ web !!Jquery - sử dụng một yêu cầu POST, không được phép Lỗi

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; 
    } 

tôi nhận được thông báo sau:

{"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"} 
+0

thử sử dụng 'GET' –

Trả lời

18

phương pháp dịch vụ web của bạn được đánh dấu bằng một ScriptMethodAttribute chỉ rõ UseHttpGet = true. Thử xóa đối số này hoặc đặt đối số thành false. Đây là điều ngăn cản POST hoạt động.

2

Vâng, sử dụng một yêu cầu GET, sau đó (hoặc thay đổi phương pháp webservice để chấp nhận 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); 
     } 
    }); 
}; 

Lưu ý rằng tham số data KHÔNG phải là một chuỗi (và, đặc biệt, nó không phải là JSON). Bạn nên chuyển một đối tượng JavaScript.

Các vấn đề liên quan