我在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>
上述错误意味着什么,我哪里出错?
答案 0 :(得分:12)
$scope.formData.imageFile
似乎评估为undefined
。
$.param(undefined) //throws Cannot read property 'jquery' of undefined
在console.log($scope.formData)
来电之前做$http()
。 $scope.formData
对象很可能不包含imageFile
属性,或imageFile
为null
/ undefined
。
请注意,$.param
将普通对象或数组作为第一个参数,提供另一种类型的值(或没有值)属于未定义的行为。
另外,如果我正确阅读您的代码,您就会尝试通过$http
上传图片文件。它不会那样工作,你需要XHR2 FormData
API。有关简单的实现,请参阅this answer。
Angular不支持ng-model
<input type="file">
,这是前一个错误的原因。