我正在使用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();
}
答案 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');)?
你只需要改变目标,真的