在上传'AJAX'上传技巧后,iframe没有得到更新

时间:2012-01-26 21:14:42

标签: php javascript jquery ajax

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

它工作得很好,我甚至给自己发了一封电子邮件。唯一的问题是我想从iframe获取信息,例如文件大小。但是,我无法从php脚本更新iframe的内容。我尝试在发送电子邮件之前将'echos'放在线上(所以它实际上就到了),但是一旦iframe的jQuery的“加载”功能触发,iframe中就没有任何内容。甚至尝试过“Inspect element”和“view source”,都是空的。

我错过了一些明显的东西吗?我无法在SO或谷歌上找到任何有同样问题的人。

FORM:

<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 CONTROLLER:

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();
}

2 个答案:

答案 0 :(得分:1)

这是解决方案: 这条线

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

由于某种原因我不知道在DOM中更新,如果发生这种情况,你必须使用它:

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

答案 1 :(得分:0)

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

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

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

我不知道这是否会起作用,但我记得很久以前我尝试过这种方式,因为你这样做我必须改变它,就像我今天所做的那样。
只是为了踢,你可以尝试将输入按钮更改为输入 - 提交删除onclick并将您的submitForm()函数中的代码放入表单的提交事件中,如上所述(删除最后一行调用提交( )和$('#submitTarget')。load(function()和$('#submitTarget')。html('before before');)?

你只需要改变目标,真的