AngularJS http帖子不起作用

时间:2016-09-08 05:27:31

标签: javascript angularjs http post http-post

我已创建了一项服务,我将其用于登录:

编辑:添加了成功'和'错误'代码。

编辑2:我正在开发一个包含Javascript / AngularJS的iOS移动应用程序。那么有没有办法将错误视为警报..

.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';
});

我的实际网址如下:

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

我也试过这种方法:https://stackoverflow.com/a/25570077/5876598

我的服务没有返回任何东西.. 我想知道我在网址形成或发送数据时是否犯了错误。

感谢。

3 个答案:

答案 0 :(得分:0)

了解错误来源的最佳方法是检查导航器开发者控制台上的“网络”标签。

假设您在Linux或Mac上运行,您还可以尝试使用CURL来了解您要尝试访问的网址的返回值。

我们无法帮助您解决代码问题。

答案 1 :(得分:0)

我在我的服务中添加了延期承诺。

我还将"success().error()"更改为".then(function(data, status, headers, config){})。我不知道为什么当我使用成功和错误时它没有用。

答案 2 :(得分: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
   )};
})