2016-09-08 7 views
0

Я создал службу и я с помощью этого для моего входа:AngularJS HTTP POST не работает

EDIT: Добавлен «успех» и код «ошибки».

EDIT 2: Я разрабатываю мобильное приложение iOS, которое включает Javascript/AngularJS. Так есть ли способ, чтобы просмотреть ошибки как предупреждения ..

.service('Login', function($http, $q, $httpParamSerializerJQLike) { 
    return { 
     loginUser: function(ipAdd, name, pw) { 

     var sendurl = 'http://' + ipAdd + ':8080/loginuser/user.cgi'; 

     var postData = { 
      'ACTION' : 'login', 
      'LOGIN' : name, 
      'PASSWORD' : pw 
     }; 

     //what is the mistake here? 
     return $http({ 
         method : 'POST', 
         url : sendurl, 
         data : $httpParamSerializerJQLike(postData), 
         headers : { 'Content-Type': 'application/x-www-form-urlencoded'} 
         }).success(function(response) { 
         var x2js = new X2JS(); 
         var jsonObj = x2js.xml_str2json(response.data); 

         if (typeof jsonObj === 'object') { 
          alert("here:1"); 
          return jsonObj; 
         } else { 
          alert("here:2"); 
          // invalid response 
          return $q.reject(jsonObj); 
         } 

         }).error(function(response) { 
         //do error 
         //comes here when no internet connection is found.. 
          alert("here:3"); 
          return $q.reject(response.data); 
         }); 

     } 
     } 
    }) 

Я также включил это в app.js:

var app = angular.module("myApp", ['starter.services'],function($httpProvider){ 
    $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8'; 
}); 

Мой фактический URL выглядит следующим образом:

'http://' + ipAdd + ':8080/loginuser/user.cgi?ACTION=login&LOGIN=' + name + '&PASSWORD=' + pw; 

Я тоже пробовал этот подход: https://stackoverflow.com/a/25570077/5876598

Моя служба ничего не возвращает .. Я хочу знать, ошибаюсь ли я в формировании url или при отправке данных.

Спасибо.

+0

Проверьте ошибки в consolse данных – Sajeetharan

+0

попробовать: PostData без $ httpParamSerializerJQLike и проверить консоль на наличие ошибок –

+0

'$ http' вернуть' promise'. Что вы ожидаете? Ваш обратный вызов успеха пуст. –

ответ

0

Я добавил отложенное обещание в свое обслуживание.

Я также изменил "success().error()" на ".then(function(data, status, headers, config){}). Не знаю, почему это не сработало, когда я использовал успех и ошибку.

0

Лучший способ узнать, откуда исходит ошибка - проверить вкладку «сеть» на консоли разработчика навигатора.

Предполагая, что вы работаете на Linux или Mac, вы также можете попытаться использовать CURL, чтобы иметь представление о том, что возвращает URL-адрес, который вы пытаетесь достичь.

Мы не можем помочь вам с кодом.

0

Фактически ранее я заметил некоторую проблему, в то время как обещая себя в обслуживании. Следуйте структуре ниже

.service('Login', function($http, $q, $httpParamSerializerJQLike) { 
    return { 
    loginUser: function(ipAdd, name, pw) { 

    var sendurl = 'http://' + ipAdd + ':8080/loginuser/user.cgi'; 

    var postData = { 
     'ACTION' : 'login', 
     'LOGIN' : name, 
     'PASSWORD' : pw 
    }; 

    //what is the mistake here? 
    return $http({ 
        method : 'POST', 
        url : sendurl, 
        data : $httpParamSerializerJQLike(postData), 
        headers : { 'Content-Type': 'application/x-www-form-urlencoded'} 
        }); 

    } 
    } 
}) 

.controller('SomeCtrlName',function(Login){ 
    //pass your parameter to below service. 
    Login.loginUser().then(function success(){ 
    //write success code here 
    },function error(){ 
    //write error code here 
    )}; 
}) 
Смежные вопросы