当前位置: 首页 > 面试题库 >

jQuery文件上传隐藏的IFrame

薛华容
2023-03-14
问题内容

我需要快速说明如何使用隐藏的iframe上传AJAX样式的文件。这是与表单有关的HTML代码部分:

<div id = "file" class = "info">        
    <form id="file_upload_form" method="post" enctype="multipart/form-data" action='script/uploadScript'>
        <input name="file" id="file" size="27" type="file" /><br />
        <input id = "uploadSubmit" type="submit" name="action" value="Upload" />
        <iframe id="upload_target" name="upload_target" src="" style="width:0;height:0;border:0px solid #fff;"></iframe>
    </form>
</div>

以下是相关的PHP:

public function uploadScript(){

    $returnVals = array();

    if ($_FILES["file"]["error"] > 0){
        $returnVals['error'] =  "Error: " . $_FILES["file"]["error"] . "<br />";
    }else{
        if ($_FILES["file"]["type"] != "text/plain"){
            $returnVals['error'] = "Badtype";
        }else{
            $returnVals['text'] =  file_get_contents($_FILES["file"]["tmp_name"]);
        }
    }

    echo json_encode($returnVals);
}

因此,从本质上讲,PHP获取了文件并检查它是否是文本文件。然后,我想在JavaScript中访问返回的json。那是我感到困惑的地方…

$("#file_upload_form").submit(function() {
    $("#file_upload_form").target = "upload_target";
    $("#upload_target").onload = uploadDone();

});

理想情况下,上传完成并加载iframe后,应调用

function uploadDone() {
    alert($("#upload_target").contents().find("body").text());  
}

但是,这始终是空白。本质上,returnVals放置在iframe主体中,但是在警报之后,因此警报中没有任何内容。那么,有没有办法纠正这个小缺陷呢?

有什么更好的解释如何做到这一点?我整天都在用不同的示例代码来打击它,等等,没有运气:/

我本质上希望能够警告通过php代码返回的文本。顺便说一句,我这样做是因为我希望它能够在IE7和之后的所有浏览器上运行。

我将不胜感激。感谢您的时间!


问题答案:

好吧,我已经使用过类似的方法:

$("#upload_target")[0].contentWindow.document.body.innerHTML

…代替。但是一般的方法是相似的:检查该字符串,如果为空,则什么也不做(即立即返回)。否则,请继续分析此json。



 类似资料:
  • 我不能上传一个文件,我猜问题是因为输入对象是隐藏的! 对象结构为:

  • Linux 下,名称中第一个字符为 . 的文件或者文件夹,系统会将它们隐藏起来。传统上,这种文件大多是用户的配置文件。 您可以尝试以下操作: cd ~ #进入您的用户目录 ls #查看当前目录下的文件列表 ls -a #查看所有文件的文件列表(包括隐藏文件)。 如果您只想查看隐藏文件,而不包括这两个特殊目录,您可以使用 ls 命令的选项 -A (ls -A) 每个目录下都包含

  • 问题内容: 是否可以取消使用隐藏iframe的文件上传? 我尝试将iframe的源设置为空字符串,但上传并未中断。 问题答案: iframe是承载表单过帐的传输渠道,因此Atanas是正确的,您必须停止iframe内部的传输。 这是一种取决于浏览器的方法:

  • 问题内容: 我想知道如何隐藏标准html文件上传标签的文本字段部分 例如 这显然会生成一个文本字段,并且在该字段旁边是一个浏览按钮…我想隐藏文本字段部分,但保留该按钮。 问题答案: 我建议隐藏整个内容,并放置一个单独的按钮对象,单击该对象将最终单击输入的浏览按钮。 您可以使用CSS和javascript来完成此操作-

  • 本文向大家介绍通过隐藏iframe实现无刷新上传文件操作,包括了通过隐藏iframe实现无刷新上传文件操作的使用技巧和注意事项,需要的朋友参考一下 其实在ajax出现之前,web应用也可以是无刷新的,那时大多通过IFrame来做到这一点。当然Ajax出现之后,人们一窝蜂地投奔Ajax 的阵营了,iFrame 就乏人问津了。但是用iFrame来实现无刷新上传文件确实一个很好的选择。 解决办法是通过一

  • 问题内容: 我可以使用以下jQuery代码使用ajax请求的POST方法执行文件上传吗? 如果可能,我是否需要填写部分?这是正确的方法吗?我只将文件发布到服务器端。 我一直在搜索,但是我发现是一个插件,而在我的计划中我不想使用它。至少目前是这样。 问题答案: 上传文件是 不是 有可能通过AJAX。 您可以使用来上传文件,而无需刷新页面。 更新 使用XHR2,支持通过AJAX上传文件。例如通过对象,