Javascript Angular无法访问返回的数据
在我的Angular/Rails应用程序中,我正在使用Angular file upload gem上传电子表格 我将电子表格传递到Rails后端,它处理数据并返回JSON数组 向上传递文件的角度代码如下:Javascript Angular无法访问返回的数据,javascript,ruby-on-rails,angularjs,Javascript,Ruby On Rails,Angularjs,在我的Angular/Rails应用程序中,我正在使用Angular file upload gem上传电子表格 我将电子表格传递到Rails后端,它处理数据并返回JSON数组 向上传递文件的角度代码如下: $scope.submitForm = function () { console.log('submit upload2'); return $scope.upload = $upload.upload({ url: '/api/batches/spreadsheet_up
$scope.submitForm = function () {
console.log('submit upload2');
return $scope.upload = $upload.upload({
url: '/api/batches/spreadsheet_upload.json',
data: {
id: 99,
assembly: "xy"
},
file: $scope.file
}).success(data, status, headers, config)(function () {
debugger
$scope.selector.tabledata = data;
$scope.uploaded = true;
});
};
Rails接受并处理该文件。我正在尝试使用呈现json:{data:spreadsheet_data}
def spreadsheet_upload
Rails.logger.debug("here params: #{params}")
spreadsheet = nil
case File.extname(params[:file].original_filename)
when '.csv' then spreadsheet = Roo::CSV.new(params[:file].path)
when '.xls' then spreadsheet = Roo::Excel.new(params[:file].path, nil, :ignore)
when '.xlsx' then spreadsheet = Roo::Excelx.new(params[:file].path, nil, :ignore)
else raise "Unknown file type: #{file.original_filename}"
end
spreadsheet_header = spreadsheet.row(1)
spreadsheet_data = []
(2..spreadsheet.last_row).each do |i|
row = Hash[[spreadsheet_header, spreadsheet.row(i)].transpose]
spreadsheet_data.push(row)
end
render json: {data: spreadsheet_data}
end
Chrome中的“网络”选项卡向我显示数据已从Rails服务器返回,但Angular似乎不知道如何处理它
ReferenceError: data is not defined
at Object.$scope.submitForm (http://0.0.0.0:3000/assets/controllers/DesignViewCtrl.js?body=1:203:18)
at http://0.0.0.0:3000/assets/lib/angular.min.js?body=1:1936:30
at http://0.0.0.0:3000/assets/lib/angular.min.js?body=1:4127:15
at Object.e.$eval (http://0.0.0.0:3000/assets/lib/angular.min.js?body=1:2432:24)
at Object.e.$apply (http://0.0.0.0:3000/assets/lib/angular.min.js?body=1:2439:40)
at HTMLFormElement.<anonymous> (http://0.0.0.0:3000/assets/lib/angular.min.js?body=1:4126:15)
at HTMLFormElement.jQuery.event.dispatch (http://0.0.0.0:3000/assets/jquery.js?body=1:2940:98)
at HTMLFormElement.elemData.handle (http://0.0.0.0:3000/assets/jquery.js?body=1:2750:123)
我也试着换一个回应,但这也不起作用
}).success(resp)(function () {
$scope.selector.tabledata = resp.data;
$scope.uploaded = true;
});
不确定,但我看到的
success
上的结构如下
.success(函数(数据、状态、标题、配置){
$scope.selector.tabledata=数据;
$scope.upload=true;
});代码>
}).success(resp)(function () {
$scope.selector.tabledata = resp.data;
$scope.uploaded = true;
});