2012-01-26 3 views
0

iframe 기술을 사용하여 양식에 포함 된 파일을 업로드하고 있습니다.업로드 'AJAX'업로드 트릭 후에 iframe이 업데이트되지 않습니다.

완벽하게 작동합니다. 파일을 이메일로 보내도됩니다. 유일한 문제는 파일 크기와 같은 iframe에서 정보를 얻고 싶다는 것입니다. 그러나, 나는 PHP 스크립트에서 iframe의 내용을 업데이트 할 수 없습니다. 전자 메일을 보내기 전에 줄에 '에코 (echos)'를 넣으려고 했으므로 실제로 도착합니다.하지만 iframe의 jQuery의 "로드"함수가 실행되자 마자 iframe에 아무 것도 없습니다. "요소 검사"및 "소스보기"도 모두 시도해 보았습니다. 모두 비어 있습니다.

나는 분명한 뭔가를 놓치고 있습니까? 나는 SO 또는 google에 동일한 문제가있는 사람을 찾을 수 없습니다.

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 컨트롤러 : 난 당신이 잘못하고 있다고 생각

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

우리 모두의 코드를 보여주세요. – Joe

+0

iframe의 내용을로드하라는 요청이 서버의 내용에 의해 차단되어 HTML을 반환하지 않습니다. 물건이 잘못 될 수있는 몇 가지 장소가 있습니다. 이 질문에 답하기 위해서는 더 많은 정보가 필요합니다. 하지만 제발,이 질문/답변을 읽고, 도움이됩니다 : http://stackoverflow.com/questions/8034987/ajax-file-upload-with-iframe-returning-and-using-the-filename-for-additional-a –

+0

stackoverflow에서 링크를 확인했지만 답변을 시도하지 않았습니다. 모든 코드에서 더 낫겠지 만 codeigniter 프레임 워크를 사용하므로 테스트 할 전체 응용 프로그램이 필요합니다. 어쨌든, 내가 할 수있는 것을 게시 할 것입니다. CI를 아는 사람이라면 무엇을 할 수 있는지 자유롭게 알 수 있습니다. – NaturalBornCamper

답변

1

여기에 솔루션입니다 당신이 이런 일이 생기면 이것을 사용해야합니다 :

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

DOM에있는 ''태그 내에 나타나는 내용입니다. 이것은 프레임이 지원되지 않는 경우 대체로 사용되지만 일반적으로 생략됩니다. jQuery'.contents()'함수는 특별한 경우로 ''을 처리하고 프레임 요소 내부에서 문서를 반환합니다. 다른 경우에는 현재 문서의 일부인 요소 자체의 내용을 반환합니다. –

0

은 ...
뭔가 당신이해야 할 일이다 like

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

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

이 방법이 효과가 있는지 나는 잘 모르겠지만 오랜 시간 전에 나는 그것을 어떻게 든 시도해 보았고, 나는 그것을 오늘날의 방식으로 바꿔야 만했다.
그냥 킥을 위해 input-button을 input-submit으로 변경하고 onclick을 제거하고 submitForm() 함수 내부의 코드를 위와 같이 양식의 submit 이벤트에 넣을 수 있습니까?

타겟을 변경하기 만하면됩니다. 실제로는

()을 입력하면됩니다. ,
console.log($('#submitTarget').html()); // Display iframe's content 

내가 모르는 어떤 이유로 DOM에 업데이트되지 않습니다 라인 :
+0

그래, 그게 내가하고있는 일이야. 직접 폼 태그에서 대상을 수동으로 직접 설정하려했는데 아무런 변화도 없었어. 게다가 파일을 업로드하고 이메일을 통해 전송하는 경우 대상이 적절하게 설정되었음을 의미합니다. – NaturalBornCamper

+0

jsfiddle 또는 pastebin에 프런트 엔드 코드를 붙여 넣을 수 있습니까? –

+1

원래 질문 : – NaturalBornCamper

관련 문제