TypeError:无法读取未定义的属性'jquery'

时间:2014-04-18 08:15:11

标签: javascript jquery angularjs

我在Chrome控制台中收到以下错误,

TypeError: Cannot read property 'jquery' of undefined

这是我的javascript函数,

<script type="text/javascript">
    var formApp = angular.module('formApp',[]);

    function formController($scope,$http){
        $scope.formData = {};

        $scope.processForm = function(){
            $http({
                method : 'POST',
                url : 'http://localhost:8080/ABCAPI/v1/image/front',
                data : $.param($scope.formData.imageFile),
                headers : {'Content-Type': "multipart/form-data" , 'Auth-Token' : "X"}
            }).success(function(data){
                console.log("");

                if (!data.success) {
                    // if not successful, bind errors to error variables

                } else {
                    // if successful, bind success message to message
                    $scope.message = data.message;
                }
            })
        };
    }

</script>

上述错误意味着什么,我哪里出错?

1 个答案:

答案 0 :(得分:12)

$scope.formData.imageFile似乎评估为undefined

$.param(undefined) //throws Cannot read property 'jquery' of undefined

console.log($scope.formData)来电之前做$http()$scope.formData对象很可能不包含imageFile属性,或imageFilenull / undefined

请注意,$.param将普通对象或数组作为第一个参数,提供另一种类型的值(或没有值)属于未定义的行为。


另外,如果我正确阅读您的代码,您就会尝试通过$http上传图片文件。它不会那样工作,你需要XHR2 FormData API。有关简单的实现,请参阅this answer

Angular不支持ng-model <input type="file">,这是前一个错误的原因。