Mon WebMethod ressemble à ceci:Pourquoi ne puis-je pas utiliser GET pour envoyer des paramètres à WebMethod?
[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json, UseHttpGet=true)]
public List<Person> HelloWorld(string hello)
{
List<Person> persons = new List<Person>
{
new Person("Sarfaraz", DateTime.Now),
new Person("Nawaz", DateTime.Now),
new Person("Manas", DateTime.Now)
};
return persons;
}
Et je suis en train d'appeler cette méthode en utilisant jQuery:
var params={hello:"sarfaraz"}; //params to be passed to the WebMethod
$.ajax
({
type: "GET", //have to use GET method
cache: false,
data: JSON.stringify(params),
contentType: "application/json; charset=utf-8",
dataType: 'json',
url: "http://localhost:51519/CommentProviderService.asmx/HelloWorld",
processData: true,
success: onSuccess,
error: onError //it gets called!
});
Mais il ne fonctionne pas. Au lieu d'appeler onSuccess
rappel, il appelle onError
où j'utilise alert
comme:
alert(response.status + " | " + response.statusText + " | " + response.responseText + " | " + response.responseXML);
qui imprime ceci:
500 | Erreur interne du serveur | {"Message": "Appel de service Web non valide, valeur manquante pour le paramètre: \ u0027hello \ u0027." "StackTrace": » à System.Web.Script.Services.WebServiceMethodData.CallMethod (cible de l'objet , IDictionary
2 parameters)\r\n at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary
2 paramètres) \ r \ n à System.Web.Script.Services.RestHandler.InvokeMethod (HttpContext contexte, WebServiceMethodData methodData, IDictionary`2 rawParams) \ r \ n à System.Web.Script.Services.RestHandler.ExecuteWebServiceCall (HttpContext contexte, WebServiceMethodData methodData) », "ExceptionType": "System.InvalidOperationException"} | undefined
Je ne comprends pas pourquoi j'obtiens cette erreur.
Si je change l'appel jQuery pour utiliser la méthode POST
et créer UseHttpGet=false
, alors cela fonctionne très bien. Mais je veux que cela fonctionne avec GET
. Qu'est-ce qui doit être réparé?
essayez .asmx/HelloWorld?bonjour = sarfaraz – sri