2013-11-01 20 views
5

Próbuję wykonać proste wywołanie ajax jquery do metody interfejsu API WEB.Wywołanie Ajax Jquery do WEB API

<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 działanie API:

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

ajax wywołanie nie uderzając Web API. Dostaję poniższy błąd w konsoli przeglądarki.

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

Odpowiedz

2

Nie zawiera kod konfiguracji trasy, ale zakładając, że jest poprawna, problem jest prawdopodobnie spowodowany tym, że metoda o nazwie cię WebAPI „get "podczas próby trafienia za pomocą żądania POST. Dzieje się tak, ponieważ WebApi próbuje znaleźć czasownik HTTP z nazwy akcji.

Sugerowałbym zmianę nazwy akcji lub dodanie atrybutu [HttpPost] do metody akcji. Możesz także wypróbować pakiet WebApiRouteDebugger.

+0

Próbowałem z HttPost, ale bez powodzenia – chamara

2

Jeśli nie wykonuje się połączenia międzydomenowego, nie ma potrzeby korzystania z jsonp (jsonp wymaga również niestandardowego formatyzatora w interfejsie API sieci Web).

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

EDIT:

Aby zainstalować jsonp typ nośnika formatowania, rzucić okiem na ten projekt: https://github.com/WebApiContrib/WebApiContrib.Formatting.Jsonp

  • Pobierz formatowania przy użyciu Nuget
  • zarejestrować formatyzator
  • Aktualizacja Twój routeconfig
+0

cześć! Muszę wykonać wywołanie między domenami – chamara

+0

Czy Twój interfejs API zwraca dane, gdy robisz regularne pobieranie z tej samej domeny i czy masz skonfigurowany program do formatowania nośników dla jsonp? – Francis

+0

działa, gdy używam adresu URL jako "/ kontroler/akcja" w tej samej domenie i typie danych, co "json". Nie mam pojęcia o formatorze jsonp – chamara

Powiązane problemy