2009-09-20 46 views
0

...之间有什么区别?我需要检查一个元素的上下文吗?加载(fn)和就绪(fn)

我从来没有遇到过使用iframe中没有的jQuery上传的问题,但现在我想从其中包含一个表单,一个iframe AJAX回调上传:

<form enctype="multipart/form-data" action="get.imageupload.php" id="upload_form" method="post"> 
    <input name="userfile" type="file" id="file" /> 
    <input type="submit" name="action" value="start" /> 
    <input type="hidden" name="id" value="<?=$id;?>" /> 
    <iframe id="upload_target" name="upload_target" src="" style="width:0;height:0;border:0"></iframe> 
</form> 

及以下JS:

$("#upload_form").submit(function() { 
    $(this).attr("target","upload_target"); 
    $("iframe", this).load(function() { 
     var ret = $("iframe", "#upload_form").contents().find("body").html(); 
     var data = eval("("+ret+")"); 
     if (data.success) alert("success"); // todo 
     if (data.failure) alert("fail"); // todo 
    }); 
    return false; 
}); 

我必须处理来自get.imageupload.php的返回JSON数据的请求,因此js看起来像这样。 问题是:load(fn)不起作用; ready(fn)取而代之,但iframe是空的,因为事件在上传开始之前触发......我是jQuery中的新手,也许还有另外一种方法?

任何想法?

感谢名单

+0

P.S.不是IE浏览器。 – Vov4ik 2009-09-20 20:51:50

回答

1

我不明白你为什么会用IFRAME一个,而不是一个div或者类似的东西在所有的内容加载。

这个想法是加载数据到一些异步的元素。

我建议你插入一个提交按钮,所以你有一个事件开始做任何你想做的事情。这是做一个“AJAX上传”的轻量级和简单的方法。

希望这是对任何帮助。

+0

'load(fn)' - 绑定到每个匹配元素上的加载事件并在页面完全加载时运行的函数。我正在使用这个函数,因为我必须处理所请求的json数据。它不是ajax函数 – Vov4ik 2009-09-20 21:28:09