2012-01-16 11 views
7

Bir web servisi ile iletişim kurmak için jQuery almaya çalışıyorum !!JQuery - izin verilmeyen bir POST isteği kullanarak Hata

{"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

'GET' kullanmayı deneyin –

cevap

18

Web hizmeti yöntemi UseHttpGet = true belirten bir ScriptMethodAttribute ile işaretlenmiştir:

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

şu mesajı alıyorum. Bu bağımsız değişkeni kaldırmayı veya false’a ayarlamayı deneyin. POST'un çalışmasını engelleyen şey budur.

2

Eh, (POST kabul etmek webservice yöntemini veya değiştirme) data parametresi bir dize OLMADIĞIDIR

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

Not sonra, bir GET isteği kullanabilirsiniz (özellikle, ve bu JSON değil). Bir JavaScript nesnesini geçmelisiniz.

İlgili konular