Phonegap filetransfer async

时间:2013-09-12 12:52:37

标签: javascript asynchronous cordova

我有一个应用程序工作流程如下。

1)用户打开表格。输入数据 2)点击添加照片按钮,选择照片。 3)上传照片并使用表单数据和照片网址将新记录插入到我的数据库中。

使用filetransfer方法上传照片很好。

我的代码如下:

我检查变量s.photo是否已设置。

if(app.isEmpty(s.photo)) {

    photo = "" ; 

}else {

    app.uploadPhoto();
    alert(s.photoresponse);

}

//在此保存详细信息

我的上传照片功能如下:

uploadPhoto: function () {

    var options = new FileUploadOptions();
    options.fileKey="file";
    options.fileName=s.photo.substr(s.photo.lastIndexOf('/')+1);
    options.mimeType="image/jpeg";

    var params = new Object();
    options.params = params;
    options.chunkedMode = false;
    alert("uploading photo");
    var ft = new FileTransfer();
    ft.upload(s.photo, encodeURI("http://server.com/upload.php"), app.win, app.fail, options);

}

我的app.win函数只是设置对s.photoresponse的响应

win: function (r) {
    s.photoresponse = r.response;
}

如果检查第一个函数,我试图提醒s.photoresponse变量。因此,即使照片上传到服务器上,我也无法将照片网址插入服务器。

filetransfer方法是异步的。如何在提交表单之前检索照片网址?

1 个答案:

答案 0 :(得分:0)

您需要将提交表单逻辑移动到app.win函数,正如您所说...是异步,但您可以在此成功函数中获得上传响应。

win: function (r) {
    s.photoresponse = r.response;
    // Here comes your submit form logic....
    alert(s.photoresponse); //<--From your example
}