我的Flimsy AJAX文件上传有什么问题?

时间:2009-07-03 19:34:22

标签: javascript jquery ajax

我知道您无法执行AJAX文件上传,但这只是我选择使用的名称。 :)

我正在使用this JQuery plugin。我认为主要的问题是我在稍微不同的背景下使用它。这是我如何使用它,我认为这是问题所在。

我先做一个表格:

$("#flash").html("<input id='vidup' type='file' name='file' size='10' /><input type='button' name='submit' onclick='videoUpload();' value='Upload' />");

我点击按钮会调用这个videoUpload函数,该函数发出一个AJAX请求来获取一个变量,即要上传的URL,这是动态创建的:

function videoUpload(){
    $.get("getUploader.php", function(data){
    new AjaxUpload('#vidup', {
          action: data,
          name: 'myfile',
          responseType: 'xml',
          onSubmit: function() {
            // allow only 1 upload
            alert('onSubmit' + data);
            this.disable();
          },
          onComplete: function(file, response){
              alert('Response' + response);
          }
        });
    });
}

然而,唯一发生的事情是创建一个名为'myfile'的隐藏字段,但我的警报都没有出现!插件的创建者通过“$(document).ready(function()”来使用它,我不是,这会导致问题吗?

请提问,因为我不知道还有什么其他信息!

全部谢谢

更新

它设法使用此标记添加输入字段:

    <input type="file" name="myfile" style="margin: -5px 0pt 0pt -175px; 
padding: 0pt; position: absolute; width: 220px; height: 30px; font-size: 14px; 
opacity: 0; cursor: pointer; display: none; z-index: 2147483583;"/>

但是,它不会继续上传文件。我以为它应该也创建了一个iFrame?

2 个答案:

答案 0 :(得分:2)

问题是插件是在ready()时注册的。那时你的#flash div是空的。你可以modify插件可能绑定调用其他事件,但这不是一个好主意,或者只是在调用ready()时从php创建div。使用Thickbox插件时,同样的事情发生在我身上。我真的不认为插件开发人员在ready()上注册操作是一个好主意,因为之后可以生成很多内容。

答案 1 :(得分:2)

我不确定我的问题是否相似,但我正在解决在jquery创建的链接上使用colorbox。由于插件文档准备就绪,它无法正常工作。然后我尝试了这个并且它有效。

function colorbox() {
                $('.gf-title').colorbox({width:"80%", height:"80%", iframe:true});
            };


            $(window).load(function(){
                colorbox();              
            });