2015-05-08 3 views
1

Поскольку я довольно новичок в веб-разработке, это может быть очень легко решить вопрос. К сожалению, я не могу решить это сам, так как я не знаю, где искать.HTTP Получить запрос от Angular JS получает пустой ответ

В настоящее время я пытаюсь получить данные из веб-API ASP.NET, который работает на моей локальной машине. Чтобы получить эти данные, я написал небольшой кусок JavaScript, используя AngularJS:

function MainController($scope, $http) { 
    $http.get("http://localhost/DBLayerDLL/api/tablets/1005"). 
    then(function(response) {$scope.data=response;}, 
     function(response){$scope.data=response;}); 
} 

HTML-страница, которая используется, также очень просто:

<!DOCTYPE html> 
<html ng-app> 

    <head> 
    <script data-require="[email protected]*" data-semver="1.3.0-beta.5" src="https://code.angularjs.org/1.3.0-beta.5/angular.js"></script> 
    <script src="scripts/main.js"></script> 
    </head> 

    <body ng-controller="MainController"> 
    <h1>Hello World!</h1> 
    <div> 
     <div>Data: {{data}}</div> 
    </div> 
    </body> 

</html> 

Действие контроллера в моем Web API реализуется следующим образом:

[RoutePrefix("api/tablets")] 
public class TabletsController : ApiController 
{ 
    [Route("{ID}")] 
    [HttpGet] 
    public TabletRecord GetTablet(int ID) 
    { 
     TabletRecord tablet = new TabletRecord(); 
     tablet.LoadFromID(ID); 
     return tablet; 
    } 
} 

Проблема заключается в ответе, который я получаю от HTTP-запроса. При распечатке на странице это выглядит так:

{"data":"","status":0,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"url":"http://localhost/DBLayerDLL/api/tablets/1005","headers":{"Accept":"application/json, text/plain, */*"}},"statusText":""} 

Неправильно, поскольку я знаю, что мой API вернет данные. Мне становится даже странно, когда я использую Fiddler, чтобы посмотреть, что происходит. В Скрипач я могу увидеть запрос и увидеть, что ответ совершенно отличается от того, что я вижу на моем веб-странице:

Fiddler HTTP request

Из-за моего отсутствия знаний и опыта, я не знаю, что происходит ...

  • Есть ли что-то, что я делаю неправильно в своем JavaScript?
  • Должен ли я делать что-то еще на странице HTML?
  • Или есть какие-то особые вещи, которые мне нужны в моем веб-API?

Любая помощь или мыс высоко ценим!

+0

Вы использовали пользовательские перехватчики http? – pixelbits

+0

Нет, я не реализовал никаких особых вещей. – RFerwerda

ответ

1

Потратив совсем немного больше времени на это я нашел, были необходимы несколько вещей, чтобы решить мою проблему:

  1. Я заметил, что я должен был включить CORS на моем веб-API в порядке для того, чтобы JavaScript мог выполнять запросы к моему веб-API. Я пришел к этому через этот link, я просто выполнил шаги, как объяснено, чтобы запустить его.

  2. Я также обнаружил, что я также могу получить свои данные с помощью общего объекта XMLHttpRequest, доступного в JavaScript.Сначала, когда мои данные отображаются с помощью этого метода, я также обнаружил следующий элемент:

  3. Объект ответа, возвращаемый методом $http.get, фактически является объектом, который непосредственно возвращается моим веб-API. Поэтому я могу использовать определенные свойства для отображения требуемых данных.

0

На обычном PHP я получаю угловые переменные с

$data = file_get_contents("php://input"); 

вы должны смотреть, если

print_r($data); 

содержит то, что и нужно.

Смежные вопросы