2013-11-01 29 views
5

Sto provando a effettuare una semplice chiamata jquery ajax a un metodo API WEB.Jquery Ajax Chiamata all'API Web

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
<script type="text/javascript"> 

    $(document).ready(function() { 

     $.ajax({ 
      type: 'POST', 
      url: 'http://redrock.com:6606/api/values/get', 

      dataType: "jsonp", 

      crossDomain: true, 
      success: function (msg) { 

       alert("success"); 

      }, 
      error: function (request, status, error) { 

       alert(error); 
      } 
     }); 
    }); 

</script> 

WEB azione API:

public IEnumerable<string> Get() 
    { 
    return new string[] { "value1", "value2" }; 
    } 

ajax chiamata non colpire l'API WEB. Ottengo il seguente errore nella console del browser.

GET http://redrock.com:6606/api/values/get?callback=jQuery18207315279033500701_1383300951840&_=1383300951850 400 (Richiesta non valida)

risposta

2

Non hai inserito il codice per l'impostazione percorso, ma ammesso che sia corretta, il problema è probabilmente causato dal fatto che avete chiamato voi WebAPI metodo di 'Get 'mentre stai provando a colpirlo usando una richiesta POST. Ciò accade perché WebApi cerca di capire il verbo HTTP dal nome dell'azione.

Suggerire di rinominare l'azione o aggiungere l'attributo [HttpPost] al metodo di azione. Puoi anche provare il pacchetto WebApiRouteDebugger.

+0

Ho provato con HttPost ma senza fortuna – chamara

2

A meno che non si stia effettuando una chiamata interdominio, non è necessario utilizzare jsonp (jsonp richiede anche un formattatore personalizzato in Web API).

$.getJSON('http://redrock.com:6606/api/values', function(data){ 
    console.log(data); 
}); 

EDIT:

Per installare un jsonp tipo di supporto formattatore, dare un'occhiata a questo progetto: https://github.com/WebApiContrib/WebApiContrib.Formatting.Jsonp

  • Scarica il formattatore tramite NuGet
  • Registrare il formattatore
  • Aggiornamento il tuo routeconfig
+0

ciao! Devo effettuare una chiamata interdominio – chamara

+0

L'API restituisce i dati quando si effettua un recupero regolare dallo stesso dominio e si è configurato un formattatore del tipo di supporto per jsonp? – Francis

+0

funziona quando uso l'URL come "/ controller/azione" nello stesso dominio e tipo di dati come "json". Non ho idea di formattatore jsonp – chamara

Problemi correlati