gpt4 book ai didi

javascript - Angular JS 和 Ionic - $http.post 上的错误,帮助我理解

转载 作者:行者123 更新时间:2023-12-03 07:50:02 24 4
gpt4 key购买 nike

我正在尝试从 iOS 上传文件,但出现意外错误。这是我的 HTML:

      <div ng-repeat="photo in vendordata.galerias" class="elemento">
<div style="z-index: 10;">
<img class="thumb" ng-src="{{photo.url}}" />
</div>
<div class="" style="text-align: center;">
<button class="" href="#" ng-show="photo.borrar">Eliminar</button>
<button class="" href="#" ng-click="subirFoto($index+1)" ng-hide="photo.borrar">Subir foto</button>
</div>
</div>

Controller 方法:

$scope.subirFoto = function(identificador){
$scope.elementoSek = identificador;
console.log("IMG src seleccionado:"+$scope.elementoSek);
$scope.getPhoto(pictureSource.PHOTOLIBRARY);
};
$scope.getPhoto = function (source) {
// Retrieve image file location from specified source
navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50,
destinationType: destinationType.FILE_URI,
sourceType: source });
};
function onPhotoURISuccess(imageURI) {
// Uncomment to view the image file URI

// Get image handle
var previo = $scope.vendordata.galerias[$scope.elementoSek].url;



var file = imageURI;
var uploadUrl = CLOSER_SERVER.url+'/upload_vendor';
var uploadResult = fileUpload.uploadFileToUrl(file, uploadUrl, $scope.elementoSek, Session.getId(), 'vendor');

console.log(uploadResult);
if(uploadResult.response == "200"){
$scope.vendordata.galerias[$scope.elementoSek].url = imageURI;
$scope.$apply();
}
}

以及文件上传服务:

app.service('fileUpload', ['$http', function ($http) {
this.uploadFileToUrl = function(file, uploadUrl, numero, sessionIde, typePic){
var fd = new FormData();

fd.append('file', file);
var data = {
session : sessionIde,
num_foto: numero,
type : typePic
};

fd.append("data", JSON.stringify(data));

$http.post(uploadUrl, fd, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
})
.then(function(data){
console.log("response ok: "+JSON.stringify(data));
return JSON.stringify(data);
}, function(){
console.log("response fail");
return "error subiendo archivo";
});
}
}]);

这是做什么的?在包含 6 个元素的图像库中,我们单击“上传”(Subir) 按钮,然后加载 iOS 图像库以选择图像。当我选择图像时,图像 URI 将发送到文件上传服务。通过 uploadFIleToUrl() 方法,我使用 $http.post 将其发送到服务器。此时它抛出了一个我无法理解的奇怪错误:

TypeError: undefined is not an object (evaluating 'uploadResult.response')

callbackFromNativecordova.js:306

(función anónima)cordova.js:1102

nativeEvalAndFetchcordova.js:1110

nativeCallbackcordova.js:1099

(función anónima)index.html:1

使用console.log,我检查了错误发生在行fd.append("data", JSON.stringify(data));和行console之间的服务fileUpload中.log("响应正常:"+JSON.stringify(data));

这个错误是什么???

最佳答案

您确定错误发生在 HTTP post 之前吗?

似乎在 fileUpload 服务失败的情况下,您会返回一个字符串,但当您尝试访问结果时,您始终将其视为 JSON 对象:

.then(function(data){
console.log("response ok: "+JSON.stringify(data));
return JSON.stringify(data);
}, function(){
console.log("response fail");
return "error subiendo archivo";
});

您需要在这里进行一些验证:

if(angular.isObject(uploadResult) && uploadResult.response == "200"){
$scope.vendordata.galerias[$scope.elementoSek].url = imageURI;
$scope.$apply();
}

您可以使用ng-file-upload ,即使您不能/不想使用这些指令,您仍然可以使用上传服务。

祝你好运!

关于javascript - Angular JS 和 Ionic - $http.post 上的错误,帮助我理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35042036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com