Javascript 来自angular.element(document).ready或initController的$.getJSON调用

Javascript 来自angular.element(document).ready或initController的$.getJSON调用,javascript,angularjs,Javascript,Angularjs,我使用以下代码片段从服务器获取数据,以加载页面的初始内容 (function () { 'use strict'; angular .module('app') .controller('MyController', MyController); MyController.$inject = ['UserService', '$rootScope', '$scope', '$cookieStore', 'AuthenticationService']; function My

我使用以下代码片段从服务器获取数据,以加载页面的初始内容

(function () {
'use strict';

angular
    .module('app')
    .controller('MyController', MyController);

MyController.$inject = ['UserService', '$rootScope', '$scope', '$cookieStore', 'AuthenticationService'];
function MyController(UserService, $rootScope, $scope, $cookieStore, AuthenticationService) {


    /*Discussion Board related Functions*/ 
    angular.element(document).ready(function () {
        // Get Current User
        $rootScope.globals = $cookieStore.get('globals') || {};
        $scope.currentUser = AuthenticationService.GetAuthData($rootScope.globals.currentUser.authdata);

        $.getJSON(
        "http://localhost/getSomeServerData.php",               
        { userName: $scope.currentUser },   
        $scope.getSomeDataResponse                                      
        );
    });

    $scope.getSomeDataResponse = function (jason) {
        var servRet = jason;
        alert("On Load Called-2");
    };
}
})()

但是,未调用响应函数$scope.getSomeDataResponse

请让我知道这种方法有什么问题

但是,响应函数$scope.getSomeDataResponse不可用 接到电话

请让我知道这种方法有什么问题

问题是,在声明getSomeDataResponse之前,您正在引用它。另外,您正在使用jQuery的
getJSON()
angularJS代码中使用HTTP get请求从服务器获取数据

这尤其不是推荐的做法。如果在页面中包含jQuery,AngularJS将在指令中包装元素时使用jQuery而不是jqLite,否则它将可委托给jqLite(这可能在所有情况下都不起作用)。为了安全起见,请使用angular的
$http.get()
服务,而不是
$.getJSON()

当然,您需要在控制器中注入
$http
服务以使其工作。看看线程中其他可能的替代方案

干杯

但是,响应函数$scope.getSomeDataResponse不可用 接到电话

请让我知道这种方法有什么问题

问题是,在声明getSomeDataResponse之前,您正在引用它。另外,您正在使用jQuery的
getJSON()
angularJS代码中使用HTTP get请求从服务器获取数据

这尤其不是推荐的做法。如果在页面中包含jQuery,AngularJS将在指令中包装元素时使用jQuery而不是jqLite,否则它将可委托给jqLite(这可能在所有情况下都不起作用)。为了安全起见,请使用angular的
$http.get()
服务,而不是
$.getJSON()

当然,您需要在控制器中注入
$http
服务以使其工作。看看线程中其他可能的替代方案


干杯

首先,在使用之前必须定义结果函数。 其次,必须正确使用$.getJSON。所以这对我来说在修复后很有效

    $scope.getSomeDataResponse = function (jason) {
        var servRet = jason;
        alert("On Load Called-2");
    };

/*Discussion Board related Functions*/ 
    angular.element(document).ready(function () {
        // Get Current User
        $rootScope.globals = $cookieStore.get('globals') || {};
        $scope.currentUser = AuthenticationService.GetAuthData($rootScope.globals.currentUser.authdata);

        $.getJSON(
        "http://localhost/getSomeServerData.php",               
        { userName: $scope.currentUser }

        ).always($scope.getSomeDataResponse);
jQuery中的回调方法不同。通过查看jQuery文档,使用fail和done回调

首先,在使用前必须定义结果函数。 其次,必须正确使用$.getJSON。所以这对我来说在修复后很有效

    $scope.getSomeDataResponse = function (jason) {
        var servRet = jason;
        alert("On Load Called-2");
    };

/*Discussion Board related Functions*/ 
    angular.element(document).ready(function () {
        // Get Current User
        $rootScope.globals = $cookieStore.get('globals') || {};
        $scope.currentUser = AuthenticationService.GetAuthData($rootScope.globals.currentUser.authdata);

        $.getJSON(
        "http://localhost/getSomeServerData.php",               
        { userName: $scope.currentUser }

        ).always($scope.getSomeDataResponse);
jQuery中的回调方法不同。通过查看jQuery文档,使用fail和done回调

虽然不是很好的做法,但是$.getJSON应该仍然有效。OP并不是问在angular中$.getJSON的等价物是什么,也不是问在angular中调用RESTful服务的最佳实践是什么,这太不成熟了。他的代码看起来不错,否则,唯一可能的原因可能是$.getJSON与angularJS版本不兼容。他提到他使用的angularJS版本了吗?或者他是否使用了jQuery。对不起,你不喜欢我的评论。我刚才指出,你的回答开头的这句话是不正确的。引用:“问题是,您正在使用jQuery的getJSON()在angularJS代码中使用HTTP get请求从服务器获取数据”。我刚刚得到了他的代码与最新的两个。如果你编辑并删除错误的声明,我可以删除消极的voteHi NLN,谢谢你的细节。我将使用这些信息来改进我的代码。再次感谢!。虽然不是很好的实践,但是$.getJSON仍然可以工作。OP并不是问在angular中$.getJSON的等价物是什么,也不是问在angular中调用RESTful服务的最佳实践是什么,这太不成熟了。他的代码看起来不错,否则,唯一可能的原因可能是$.getJSON与angularJS版本不兼容。他提到他使用的angularJS版本了吗?或者他是否使用了jQuery。对不起,你不喜欢我的评论。我刚才指出,你的回答开头的这句话是不正确的。引用:“问题是,您正在使用jQuery的getJSON()在angularJS代码中使用HTTP get请求从服务器获取数据”。我刚刚得到了他的代码与最新的两个。如果你编辑并删除错误的声明,我可以删除消极的voteHi NLN,谢谢你的细节。我将使用这些信息来改进我的代码。再次感谢!。你检查过你的控制台了吗?您没有看到关于XMLHttpRequest无法加载或类似问题的任何错误吗?正如回答(例如@NLN)中指出的,您没有遵循一些好的实践,但是如果您按照我在回答中指出的那样进行修复,您的代码应该仍然可以工作。您检查了控制台了吗?你没有看到关于XMLHttpRequest无法加载或类似的错误吗?正如一些回答(例如@NLN)中指出的,你没有遵循一些好的实践,但是如果你像我在回答中指出的那样进行修复,你的代码应该仍然可以工作。OP使用
$没有任何错误或“不正确”。getJSON
感谢你在这方面的帮助。我是Web开发的初学者(不到一个月)。因此,我们犯了一些可怜的错误。在某种程度上,我同意@NLN。我将努力使我的代码更好。干杯@大卫康拉德:你说得对。您可以提供一个成功处理程序,但如果调用失败,OP将不会得到任何调用,OP希望该警报始终弹出up@Braim,OP中没有说“错误时应调用getSomeDataResponse”或类似的语句,问题是从未调用过
getSomeDataResponse
。您的
always()
是一个毫无意义的附录,因为它没有错误处理的支持-结果是,即使发生错误,也会调用成功处理程序!!这可能会影响应用程序的各个方面。在3个月的时间里,OP必须找出错误发生的原因,他将花费数小时,直到他意识到是JSON失败——代码他真的失败了