2012-05-25 13 views
18

mam żądania ajax, który działa dobrze przy użyciu „post”, ale gdy używany „GET” to daje mi następujący błąd,Wywołanie WebMethod przy użyciu jQueryAjax „GET”

{"Message":"An attempt was made to call the method \u0027GetSomething\u0027 
using a GET  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"} 

więc tutaj jest mój kod, na po stronie klienta,

function test() { 
     $.ajax({ 
      url: "Default4.aspx/GetSomething", 
      type: "GET", 
      dataType: "json", 
      contentType: "application/json; charset=utf-8", 
      success: function (res) { debugger; alert(res.d); }, 
      error: function (res) { debugger; alert("error"); } 
     }); 
    } 

po stronie serwera,

[WebMethod] 
public static string GetSomething() 
{ 
    return "got something"; 
} 

jakikolwiek powód, dlaczego otrzymuję błąd, gdy używane "GET" ??

+0

Czy "post" działa? – dhinesh

Odpowiedz

58

Jeśli chcesz wywołać ją za pomocą GET, trzeba dodać:

[WebMethod] 
[ScriptMethod(UseHttpGet=true)] 
.... 
+0

dziękuję to działa. –

+0

Cierpiałem na ten sam problem. Dziękuję Ci. – jkl

1

Another sposoby: Można dodać go w pliku config

<system.web> 
    ... 
    <webServices> 
     <protocols> 
       <add name="HttpGet"/> 
     </protocols> 
    </webServices> 
    ... 
</system.web> 
0

należy dodać następujący kod przed w pliku .config.

<location path="webservice.asmx"> 
    <system.web> 
    <webServices> 
     <protocols> 
     <add name="HttpGet"/> 
     <add name="HttpPost"/> 
     </protocols> 
    </webServices> 
    </system.web> 
</location> 
Powiązane problemy