Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angularjs:使用“引用”;。然后";并得到回应_Javascript_Ruby On Rails_Angularjs_Http - Fatal编程技术网

Javascript Angularjs:使用“引用”;。然后";并得到回应

Javascript Angularjs:使用“引用”;。然后";并得到回应,javascript,ruby-on-rails,angularjs,http,Javascript,Ruby On Rails,Angularjs,Http,我想发送一个http请求并获取此请求的响应。我希望如果数据被保存,我得到数据库信息,如果不保存,我得到错误。为此,我想在angularjs中使用。然后使用。为此,我创建了angularjs控制器和服务。我在angularjs部分有以下代码: bolouk.js: 'use strict'; var app = angular.module('app'); app.controller('BoloukCtrl', ['$scope', 'Bolouks', function($scope, Bol

我想发送一个http请求并获取此请求的响应。我希望如果数据被保存,我得到数据库信息,如果不保存,我得到错误。为此,我想在angularjs中使用
。然后使用
。为此,我创建了angularjs控制器和服务。我在angularjs部分有以下代码:

bolouk.js

'use strict';
var app = angular.module('app');
app.controller('BoloukCtrl', ['$scope', 'Bolouks', function($scope, Bolouks){
$scope.save = function(){
        Bolouks.create($scope.bolouk).then(function(data){
        $scope.saveBolouk = data;
        },function(err){
                $scope.err = err;
            }
        );
    };
}]);
'use strict';
var app = angular.module('boloukService', ['ngResource']);
app.factory('Bolouks', function($resource) {
    return $resource('/api/bolouks.json', {}, {
        create: { method: 'POST', isArray: false }
    });
});
boloukService.js

'use strict';
var app = angular.module('app');
app.controller('BoloukCtrl', ['$scope', 'Bolouks', function($scope, Bolouks){
$scope.save = function(){
        Bolouks.create($scope.bolouk).then(function(data){
        $scope.saveBolouk = data;
        },function(err){
                $scope.err = err;
            }
        );
    };
}]);
'use strict';
var app = angular.module('boloukService', ['ngResource']);
app.factory('Bolouks', function($resource) {
    return $resource('/api/bolouks.json', {}, {
        create: { method: 'POST', isArray: false }
    });
});
我在rails服务器中有以下代码:
bolouks\u controller.rb

  def create
    @bolouk = Bolouk.create(bolouk_params)
    if @bolouk.valid?
      #@bolouk.save
      respond_with @bolouk, :location => api_bolouks_path
    else
      respond_with @bolouk.errors, :location => api_bolouks_path
    end
  end
  private
  def bolouk_params
    params.require(:bolouk).permit(:boloukcode, :north, :south, :east, :west)
  end
请求正确发送到rails服务器,数据正确保存到数据库,但我无法得到请求的响应,当我运行函数“”时,在chrome控制台中出现以下错误:

TypeError: undefined is not a function
    at Scope.$scope.save (http://localhost:3000/assets/controllers/bolouk.js?body=1:19:39)
    at http://localhost:3000/assets/angular.js?body=1:10973:21
    at http://localhost:3000/assets/angular.js?body=1:20088:17
    at Scope.$eval (http://localhost:3000/assets/angular.js?body=1:12752:28)
    at Scope.$apply (http://localhost:3000/assets/angular.js?body=1:12850:23)
    at HTMLFormElement.<anonymous> (http://localhost:3000/assets/angular.js?body=1:20087:21)
    at HTMLFormElement.jQuery.event.dispatch (http://localhost:3000/assets/templates/jquery-1.10.2.js?body=1:4627:9)
    at HTMLFormElement.elemData.handle (http://localhost:3000/assets/templates/jquery-1.10.2.js?body=1:4295:46) 
TypeError:未定义不是函数
在范围内。$Scope.save(http://localhost:3000/assets/controllers/bolouk.js?body=1:19:39)
在http://localhost:3000/assets/angular.js?body=1:10973:21
在http://localhost:3000/assets/angular.js?body=1:20088:17
在范围内。$eval(http://localhost:3000/assets/angular.js?body=1:12752:28)
在范围内。$apply(http://localhost:3000/assets/angular.js?body=1:12850:23)
在HTMLFormElement。(http://localhost:3000/assets/angular.js?body=1:20087:21)
在HTMLFormElement.jQuery.event.dispatch(http://localhost:3000/assets/templates/jquery-1.10.2.js?主体=1:4627:9)
位于HTMLFormElement.elemData.handle(http://localhost:3000/assets/templates/jquery-1.10.2.js?主体=1:4295:46)
我想我没有正确地使用
。然后在angularjs控制器中,我也检查了
$q
方法,但再次得到这个错误。有人有办法解决这个问题吗

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


app.controller('BoloukCtrl', ['$scope', 'Bolouks', function($scope, Bolouks){
    $scope.save = function(){
        var user = Bolouks.get();
        user.get(function(resp) {
            //request successful
        }, function(err) {
            //request error
        });
    };
}]);

angular.module('boloukService', ['ngResource']);
    app.factory('Bolouks', function($resource) {
    var savedData = {}

    function get() {
        return  $resource('/api/bolouks.json', {}, {
            create: { method: 'POST', isArray: false}
        });
    }
    return {
        get: get
    }
});

试试这个:)

您已经在同一个变量中分配了这两个模块。这可能与您的代码冲突。因此,请使用以下代码:

bolouk.js:

'use strict';
var app = angular.module('app',['ngResource']);
app.controller('BoloukCtrl', ['$scope', 'Bolouks', function($scope, Bolouks){
$scope.save = function(){
        Bolouks.create($scope.bolouk).$promise.then(function(data){
        $scope.saveBolouk = data;
        })
        .catch(function (err) {
          console.log(err);

      })
    };
}]);
boloukService.js:

'use strict';

app.factory('Bolouks', function($resource) {
    return $resource('/api/bolouks.json', {}, {
        create: { method: 'POST', isArray: false }
    });
});

我可以看到您正在使用$resource。因此,您可以使用所有回调函数。只需浏览一下这个docs$promise,它是您可以使用的一种方式。然后,您需要在您的服务中定义它。希望有帮助:)我以前尝试过这种类型的代码,通过这种代码我可以获得保存在数据库中的数据,但如果服务器不保存数据并发送错误,我就无法接收错误。这种代码也不起作用,我会出错。但你的想法很好,现在我正试图改变并使用你的指南。如果你有其他想法,请与我分享。谢谢。你的回答和我的问题有什么不同?我在
main.js
文件中添加了
ngResources
,我可以在
bolouk.js
中使用它,如果我再次将它添加到控制器,我会得到错误。您已经创建了两个模块“app”和“boloukService”。两个模块都分配给同一变量var app。因此,它与代码冲突或覆盖以前的应用程序模块。
app
是angularjs控制器的根,我必须定义所有依赖项。我无法删除
bolokService.js
的第一行,因为我在这一行中定义了服务的名称,并在
app.js
中使用。var app=angular.module('boloukService',['ngResource');表示您正在创建模块并在应用程序变量中引用它们。var-app=角度模块(“app”);表示您正在使用现有的模块名为app。再一次,你在var应用程序中引用。我们知道app是一个全局变量,而不是局部变量,所以在一个变量中,您引用了两个模块。它覆盖了您的代码。您是否使用了此代码。您能告诉我您使用此代码时遇到的错误吗