2013-07-19 1 views
2

C'est la première fois que je travaille avec l'API Web. J'essaye d'appeler une api de Web par l'intermédiaire d'un appel de jquery ajax. L'appel ajax réussit l'action web api mais le paramètre "xx" est toujours nul.Paramètres null dans l'API Web ajax Appel

Ajax appel

var x = "chamara"; 
    $.ajax({ 
    type: 'POST', 
    url: 'http://localhost:1557/api/values/mytest', 
    data: '{"xx":"' + x + '"}', 
    dataType: 'json', 
    }); 

Web d'action Api.

[AcceptVerbs("GET", "POST")] 
public void mytest([FromBody]string xx) 
{ 
    string a = xx; 

} 

configuration des voies d'API Web.

config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { action = "get", id = RouteParameter.Optional } 
      ); 

Répondre

2

Essayez ceci:

var x = "chamara"; 
$.ajax({ 
    type: 'POST', 
    url: 'http://localhost:1557/api/values/mytest', 
    data: { '' : x }, 
    dataType: 'json', 
}); 

j'ai rencontré la même chose ce matin. Je ne sais pas pourquoi et je pense qu'il devrait y avoir un meilleur moyen, mais cela a fonctionné pour moi.

Alternativement, voir this SO question où les solutions suggèrent de mettre le contentType à application/json.

+0

mmm intéressant .. je l'ai obtenu fonctionnant aussi mais semble que ça ne fonctionne pas pour plusieurs paramètres. de toute façon merci pour la réponse – chamara

+0

bonjour. vérifier ici http://encosia.com/using-jquery-to-post-frombody-parameters-to-web-api/ [FromBody] accepte Un seul paramètre par méthode – chamara