2016-04-19 6 views
1

Я новичок в угловых js, внутри моего контроллера.js есть контроллеры для моего приложения, что на 100% работает. У меня проблема: как сделать вызов ajax с помощью угловых js. Я пытаюсь извлечь данные из моего сервиса и передать его в свой index.html, используя этот ajax. Когда я пытаюсь отладить код, он попадает только на $http, но не проходит через код внутри него. Что я здесь делаю неправильно?Angular Js beginner Ajax Call

$http({ 
     method: 'POST', 
     url: 'http://someService.site.net/site.aspx', 
     data:{action:'someAction', position:'founders'}, 
     headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
    }).then(function successCallback(response){ 

     var json =jQuery.parseJSON(response); 
     var htmldata=""; 
     for(i=0; i<json.length; i++) 
     { 
      var htmlInfo = '<li><div class=\'col\'><a href="'+ json[i].Id +'"><img width=\'100%\' height=\'auto\' src="'+json[i].Image + '" class=\'profile-img\' /><h3>' +json[i].Name+'</h3><p>'+json[i].Title+'</p></a></div></li>'; 

      htmldata+= htmlInfo; 
     } 
     jQuery("#vflist").html(htmldata); 
    }, function errorCallback(response){ 

    }); 

ответ

1

Отметить ваши контрольные точки успеха и обратные вызовы ошибок.

$ http - это сервис. Вы передали требуемые данные в свой параметр.

$http({}) 
     ^options 

После того, как он называет этот $ http, он выполнит эту работу и отправит запрос на предоставленный url асинхронно. Но вам не нужно отлаживать эту часть.

$http({options}) 
    .then(function(data){ 
     // mark 1 breakpoint here 
    }, function(data){ 
     // mark another breakpoint here 
    }) 
+0

хороший момент .. я постараюсь это первое спасибо! –

+0

он тоже не ударил, успел и ошибся –

1

Поскольку вы уже используете JQuery вместе с Angularjs Я бы порекомендовал вам использовать $ .params() для кодирования данных параметров. Вашего $ HTTP будет как

$http({ 
    method: 'POST', 
    url: 'http://someService.site.net/site.aspx', 
    data:$.params({action:'someAction', position:'founders'}), 
    headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
}) 

Кроме того, я предлагаю вам использовать угловой способ делать вещи, а не с помощью JQuery. Вы могли бы даже нравится;)

+0

uhmm .. я хотел сделать все, используя угловые js, но я не мог найти ответ на свой вопрос, например, угловые js parseJSON –

+0

Вы могли бы просто пойти с native ' JSON.parse() 'или Angular's Angular.fromJSON()'. Также вы можете заменить '$ .params' на' $ httpParamSerializerJQLike' Angular's [link] (https://code.angularjs.org/1.4.1/docs/api/ng/service/$httpParamSerializerJQLike) –

+0

какая разница? для моего кода, кроме того, что как угловой способ разбора json на объект? –

1

Первая вещь: вы можете просто использовать $http функцию как это:

var config = { 
    headers : { 
     'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;' 
}}; 

$http.post('http://someService.site.net/site.aspx', 
      {action:'someAction', position:'founders'}, 
      config) 
    .success(function(response) { 
     var json =jQuery.parseJSON(response); 
     var htmldata=""; 
     for(i=0; i<json.length; i++) { 
      var htmlInfo = '<li><div class=\'col\'><a href="'+ json[i].Id +'"><img width=\'100%\' height=\'auto\' src="'+json[i].Image + '" class=\'profile-img\' /><h3>' +json[i].Name+'</h3><p>'+json[i].Title+'</p></a></div></li>'; 

      htmldata+= htmlInfo; 
     } 
     jQuery("#vflist").html($sce.trustAsHtml(htmldata)); 
    }) 
    .error(function(data, status, headers, config) { 
      console.log(status); 
    }); 

Во-вторых, как вы можете увидеть в приведенном выше коде я использовал $sce.trustAsHtml() - это требуется, когда вы нажимаете некоторый html на DOM через $http - или он просто покажет коды с тегами. У вас должно быть inject$sce в определении контроллера.

+0

он не работает. Хмм, что еще мне не хватает .. но спасибо за информацию sir @himel –

+0

hmm трудно сказать - где ошибка происходит без контекста. –

+0

, когда я отлаживаю код, он попадает в ошибку и показывает конфигурационную вещь Content-Type: «application/x-www-urlencoded; charset = utf-8;» –

0

поставить эту строку перед вызовом Ajax это работает для меня, надеюсь, что для вас

$http.defaults.headers.common.Authorization = 'Basic YmVlcDpib29w'; 
// YmVlcDpib29w you can put any string 

Это также дается не- https://docs.angularjs.org/api/ng/service/ $ HTTP

+0

значение, которое я собираюсь написать для авторизации, это «Basic YmVlcDpib29w», а также? –

+0

это не сработало, но спасибо! –

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