0

我的 index.php 页面上有一个图像上传器,当图像开始上传时(通过将图像拖到上传框上启动),会创建 POST 请求(仅供参考 HTML5 + php Uploader)

POST http://localhost:8888/backbone_images/post_file.php

在我的 post_file.php 中,我通过将上传图像的 URL 插入到我的 exit_status 中来检索它,然后在我的脚本中将其分配给全局 javascript 变量“globe”

if(move_uploaded_file($pic['tmp_name'], $upload_dir.$pic['name'])){
        exit_status($pic['name']);
    }

在我的主干脚本文件中,我检查了 dropbox 中的 drop 事件,它有效,

App.Views.AddImage = Backbone.View.extend({
    el: '#addImage',  
    events: {
        'drop': 'submit' 
    }, 

所以图像已被拖到保管箱上,我调用我的提交函数来创建一个新模型并将新图像的 url(我通过 javascript 变量传递)分配给我的新模型的 url

    submit: function(e) {
        e.preventDefault();  // preventing default submission..
        var newImage = globe;  // assign globe --url of the newly created image--to new model
        var imager = new App.Models.Person({ url: newImage });//creating a new img object
        this.collection.add(imager); 
    }

问题是,当删除图像后触发我的主干提交功能时,我对 /post_file.php 的 POST 尚未运行,因此我的变量 'globe' 不包含新 URL,并且我新创建的模型最终缺少 url

所以问题:在图像删除后执行我的“提交”功能之前,我有什么方法可以等待 POST 在我的主干事件中完成?

我尝试使用:$.when( $.ajax("/post_file.php") )在我的提交函数内部,但这只是运行另一个 POST 请求,留下我的变量值,而不是运行原始 POST 请求以检索我正在等待的图像 URL。

我首选的工作流程是

一个。拖动/上传图像,(POST 执行) b. 新模型被添加到上传图片的 URL 集合中,

但我最终不得不先添加一个额外的点击功能,否则 POST 不会完成

一个。拖动/上传图像,(POST 执行) b. 点击提交按钮 c. 模型被添加到集合中

4

0 回答 0