2012-01-06 2 views
0

JQuery와 PHP로 양식을 만들고 모든 것이 제대로 작동하는 것처럼 보입니다. Json은 $ _FILES를 좋아하지 않는 것 같습니다. 자바 스크립트가 꺼지면 양식이 잘 업로드됩니다. 이것은 알려진 문제입니까? 그렇다면 해결 방법이 있습니까? 어떻게 JQuery 플러그인이이를 관리합니까?

감사합니다.

JQUERY :

$('#mcContactForm').submit(function(e){ 
    e.preventDefault(); 

    // validate form 
    mcValidateForm(); 

    // serialize and submit form data 
    $('.mcloading').show(); 
    var mcFormData = $(this).serialize(); 
    mcSubmitForm(mcFormData); 

    // ----------------------------------------------- 
    // AJAX FORM SUBMIT 
    // ----------------------------------------------- 
    function mcSubmitForm(mcFormData){ 
     $.ajax({ 
      type: 'POST', 
      url: 'contact.php', 
      data: mcFormData, 
      dataType: 'json', 
      cache: false, 
      timeout: 7000, 
      success: function(data) { 
       if(data.error === true){ 

        ... 
       } 
       else if(data.error === false){ 

        ... 
       } 
      }, 
      error: function(XMLHttpRequest, textStatus, errorThrown) { 
       alert(errorThrown); 
       ... 
      },    
      complete: function(XMLHttpRequest, status) { 
       ... 
      } 
     }); 
    } 
}); 
+3

코드를 표시 할 수 있습니까? :) 그 wourld 정말 도움 – Deleteman

+1

난 그냥 serialize() 파일 입력 필드를 제출하지 않는 읽었습니다. 그것이 질문의 핵심입니다. 이 문제를 해결할 수있는 방법이 있습니까? – user1002039

+0

@ user1002039 예, 해결 방법은 ajax를 사용하는 대신 숨겨진 iframe 필드에 제출하는 것입니다. 이 작업을 수행하는 많은 쿼리 플러그인이 있습니다. 내 대답을 보라. –

답변

2

그것은 아마도 당신이 아약스를 통해 파일을 업로드하려고이 단순히 정기적으로 아약스를 통해 다시 양식 매개 변수를 전송하여 수행 할 수 없음을 발견하고 같은 소리? 그렇다면 필요한 것은 ajax 파일 업로드 플러그인입니다. 몇 가지 가능성 여기를 참조하십시오 :

http://www.webdeveloperjuice.com/2010/02/13/7-trusted-ajax-file-upload-plugins-using-jquery/

이 일반적으로 업로드를 수행하는 숨겨진 iframe을에 제출의 시스템을 사용합니다.

+0

고마워요! 숨겨진 iframe 제출 방법에 대한 자습서가 있습니까? 그게 무슨 뜻인지는 모르겠다. 나는 플러그인에 대해 아무것도 없지만 이것이 어떻게 행해지는지 배우고 싶다. – user1002039

+0

잘 숨겨진 iframe 제출은 완전히 간단하지 않습니다. 그 이유는 플러그인을 추천하기 때문입니다. 그러나 기본적으로 "display : none"스타일로 iframe을 만듭니다 (사용자가 볼 수 없도록). 그리고 폼의'target' 속성을 프레임의 이름으로 설정하십시오. 이렇게하면 해당 프레임에있는 것처럼 * 제출됩니다. 그런 다음 자바 스크립트 이벤트 핸들러를 설정하여 iframe의 세부 정보에 따라 업로드가 완료되면 catch 한 다음 iframe을 부모에게 다시 보내 프로세스를 완료하게합니다. –

+0

개념적으로는 간단하지만 실제로는 어려운 프로세스입니다. 플러그인을 사용하면 한 줄의 코드에서 모든 작업을 수행 할 수 있습니다. –

관련 문제