簡體   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