这个Curl POST命令的Angular JS等价物是什么?

时间:2015-04-05 13:14:07

标签: javascript angularjs curl

我正在尝试使用Angular JS编写以下Curl命令。我对AngularJS很新,所以我可能会遗漏一些基本的东西。具体来说,这是一个移动应用程序,即使用离子框架(使用Angular JS)

curl命令是这样的:

curl -X POST  -d "username=xxxx&password=xxxx&action=login&view=console"  http://myserver.com/zm/index.php?skin=xml

这可以从命令行完美运行。

在AngularJS中,我有以下代码:

angular.module('starter.controllers').controller('MonitorCtrl', function($ionicPlatform, $scope,$http)
{
            
console.log("***MAKING REQUEST");
                                                 

//$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";
                                                 
 $http({
    url:'http://myserver.com:9898/zm/index.php?skin=xml',
    method:'post',
    headers: {'Content-Type': 'application/x-www-form-urlencoded',
              'Accept': '*/*',
       },
    transformRequest: function(obj) {
       var str = [];
       for(var p in obj)
       str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
       var foo= str.join("&");
       console.log ("****RETURNING "+foo);
       return foo;
    },
       data: {username:'admin',
              password:'xxxx',
              action:'login',
              view:'console'}
       
  })
                                                 
.success (function()
{console.log("****YAY");
})
.error(function(data, status, headers, config)
{
        console.log("***OOPS "+status + " H: "+data);
});
                                                 
                                                
});

当我运行此代码时,我看到一个POST请求发送到我的服务器(我正在使用httpry嗅探),并且从服务器返回了带有所需有效负载的200OK,但我的成功处理程序未被调用。调用错误处理程序,状态为0

2 个答案:

答案 0 :(得分:1)

数据应为json。这取决于您的服务器。

执行此操作的常用方法是在对象上使用属性:

data: {username: 'xxxx', password: 'xxxx', action: 'login', view:'console'}

但是如果您的服务器收到一个字符串作为输入,那么:

data: {key: 'username=xxxx&password=xxxx&action=login&view=console'}

答案 1 :(得分:1)

好的,我终于弄明白了

a)Amir popovich是正确的,如果我正在处理XML,我需要进行“变形”。 (对于非Calvin和Hobbes的读者,以神奇的方式转换)JSON to XML。我在我的问题中发布的更新代码正是这样且有效。但即便在完成所有这些操作后,我的URL帖子(或获取)也失败了。

b)我遇到的整个错误的CORS错误是因为我在桌面浏览器(Safari)中运行此应用程序,而Safari正在推出响应,除非它有Accept Origin

c)当我在手机上部署并测试应用程序时,它就像一个魅力。不要问我为什么