【问题标题】:Cannot POST using Angular JS [duplicate]无法使用 Angular JS 发布 [重复]
【发布时间】:2017-07-02 13:03:10
【问题描述】:

您好,我正在尝试使用 AnguarJs 发布数据,但遇到了一些问题。我的 js 代码如下:

    var app = angular.module('myApp', []);
    app.constant('appUrl', 'http://localhost/zara/rest/');
 /*---- categories fetch code  -------*/  
    app.controller('myController',['$scope','$http','appUrl',  function($scope, $http , appUrl) {

      $scope.newName = "";
    $scope.postForm = function() {  
        var data = $.param({
                name: $scope.newName
            });

        $http.post("http://localhost/zara/rest/api_customerlogin.php", data).success(function(data, status) {
            $scope.hello = data;
            console.log(data);
        });
     };
  }]);

我收到此错误TypeError: Cannot read property 'param' of undefined 当我将代码更改为喜欢此代码时,我收到此错误。

<script>
    angular.module('myApp', [])
    .controller('myController', ['$scope', '$http', function($scope, $http) {
        this.loginForm = function() {

            var user_data='user_email=' +this.inputData.email+'&user_password='+this.inputData.password;

            $http({
                method: 'POST',
                url: 'login.php',
                data: user_data,
                headers: {'Content-Type': 'application/x-www-form-urlencoded'}
            })
            .success(function(data) {
        console.log(data);

            })
        }

    }]);
    </script>

无法发布到 login.html 页面。这是我在 AnguarJs 上的第一个项目,所以对这个不太熟悉。谢谢。

【问题讨论】:

  • 你在服务文件中试过了吗:app.serivce('service',[$http,function(){ }])
  • 不,我刚刚尝试了上面的代码。服务将如何处理这个?
  • $.param 究竟为您做什么?!将您的数据更改为objectvar data = {name: $scope.newName}
  • 此错误是因为与jqueryjquery.param 相关的$ 未定义
  • 如果你在 Angular 中使用 $http 作为服务会更好。

标签: javascript php angularjs


【解决方案1】:

在您尝试发布的第一个代码中

http://localhost/zara/rest/api_customerlogin.php

您是否忘记将第二个示例中的login.php 更改为此网址?

【讨论】:

  • 第二次我只是粘贴带有虚拟 URL 的代码。更改 URL 对代码没有影响。
【解决方案2】:

请注意,在您为浏览器添加 allow-orgin-access 插件之前,发布请求可能无法在本地环境中运行。但它适用于实际工作的网站。

var app = angular.module('myApp', []);

app.constant('appUrl', 'http://localhost/zara/rest/');

app.controller('myController',function($scope, service, appUrl){

   $scope.newName = "";
   $scope.loading = false;

   $scope.postForm = function() {

     var data = $.param({
            name: $scope.newName
         });

     $scope.loading = true;
     service.makeThisRequest(appUrl + 'api_customerlogin.php', data).then(function(data){
         $scope.hello = data;
         console.log(data);
      },function(error){
        console.log(error);
      }).finally(function(){
        $scope.loading = false;
      });

   });

}]);

app.factory('service', function ($http) {
    return {
      makeThisRequest : function(url,params){
        return $http.post(url,params);
      }
    };
});

【讨论】:

  • 请解释$.param?!有什么用?
  • 创建适合在 URL 查询字符串或 Ajax 请求中使用的数组、普通对象或 jQuery 对象的序列化表示。如果传递了一个 jQuery 对象,它应该包含具有名称/值属性的输入元素。 api.jquery.com/jquery.param
  • 我已经在 PHP 端添加了允许源代码。
  • 那么你得到了什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-10
  • 2018-12-02
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
  • 2021-10-07
相关资源
最近更新 更多