繁体   English   中英

上传“ AJAX”上传技巧后,iframe没有更新

[英]iframe doesn't get updated after the upload 'AJAX' upload trick

我正在使用iframe技术上传表单中包含的文件。

它运行良好,我什至给自己发送了一封包含该文件的电子邮件。 唯一的问题是,我想从iframe获取信息,例如文件大小。 但是,我无法从php脚本更新iframe的内容。 我尝试在发送电子邮件之前将“ echos”放在行上(这样它实际上就到达了),但是一旦iframe的jQuery的“ load”函数启动,iframe中就什么也没有了。 甚至尝试过“检查元素”和“查看源代码”,都为空。

我是否缺少明显的东西? 我在SO或Google上找不到任何有相同问题的人。

形成:

<form id="submitResumeForm" method="post" enctype="multipart/form-data" action="career/sendResume" target="submitTarget">
<!-- input fields, etc -->
<input type="button" onClick="submitForm()" value="<?=lang('submit')?>" />
</form>
<iframe id="submitTarget" name="submitTarget" src="" style="position:absolute;top:-1000px;left:-1000px;width:0;height:0;border:0px solid #fff;"></iframe>

JAVASCRIPT:

function submitForm()
{
    $('#submitResumeForm').attr('target', 'submitTarget');
    // ... verifications ...
    $('#submitTarget').load(function()
    {
        console.log( $(this).html() ); // Content is: "content before"
        console.log( $(this).contents() ); //Garbage
    });
    // Line Below puts content in the iframe, and that content is still there after
    // the php is executed, so iframe is NEVER updated
    $('#submitTarget').html('content before');

    $("#submitResumeForm").submit();
}

PHP控制器:

function sendResume()
{
    echo 'ASDFASDFASDFASDF';
    $this->load->library('email');
    $this->email->clear();      
    $this->email->to($this->input->post('email'));
    // ... other fields, attach file (working perfectly)
    $this->email->send();
}

解决方法如下:

console.log( $('#submitTarget').html() ); // Display iframe's content

由于某些原因,我没有在DOM中进行更新,如果您遇到这种情况,则必须使用它:

console.log( $('#submitTarget').contents().find('body').html() );

我认为您做错了...
你应该做的像

<form ...>
   <input type="file" .../>
   <input type="submit" .../>
</form>
<iframe id="myIframe"></iframe>

$('form').submit(function(){
   $(form).attr('target'. 'myIframe');
});

我不知道这是否行得通,但我记得很久以前,我在尝试时以某种方式尝试了一下,因此不得不将其更改为今天的方式。
只是为了踢一下,您能像我上面所做的那样尝试将输入按钮更改为输入提交,从而删除onclick并将代码放入表单的Submit事件中,并将onClickForm()函数中的代码放入表单的Submit事件中(删除最后一行调用Submit( )和$('#submitTarget')。load(function()和$('#submitTarget')。html('content before');)?

你只需要改变目标,真的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM