2012-03-14 6 views
2

내 사이트에 jQuery를 사용하여 유효성을 검사 한 후 Ajax를 통해 PHP 파일로 전송하는 HTML 양식이 있습니다. 여기에 여는 폼 태그는 다음과 같습니다HTML 양식 작업 - "작업 순서"

<form action="#" method="post"> 
내가 (아래와 같이)가 자바 스크립트가 브라우저에서 사용할 수있는 경우, 그들은 여전히 ​​기입 할 수 있도록 양식 action에 path_to_process_file.php을 가하고의 생각

양식을 제출하십시오.

<form action="../path_to_process_file.php" method="post"> 

내 질문 : 양식을 제출할 때

  • 파일 '작업의 순서'어떤 내용을 포함해야한다, 자바 스크립트가 활성화되어 있습니까?
  • 먼저 PHP 작업 경로를 사용합니까? 아니면 JavaScript를 통해 먼저 제출을 시도할까요?

** 업데이트 : 여기 내 JS가 Ajax를 통해 제출하는 데 사용됩니다.

$(document).bind("pageinit", function(event, data) { 
    $("#rackback-quote-request-form").validate({ 
     // Custom validation messages 
     messages: { quote_name: "Please enter your full name."}, 
     errorElement: "p", 
     submitHandler: function(form){ 

      //Get the data from the form fields and format correctly 
      var product = $("#rackback-quote-request-form #product").val(); 


      var data = 'product=' + product; 
      $.ajax({ 
       type: "POST", 
       url: "../php/QR-rackback.php", 
       data: data, 
       success: function(data) { 
         $("#rackback-quote-request-wrapper").hide(); 
         $("#rackback-quote-request-success").append("<center><h3>Thanks! Your quote request has been sent.</h3></center>"); 
        }, 
       error: function(){ 
        alert("Javascript error, please try again"); 
       } 
      }); 
      return false; 
     } 
    }); 
}); 

는 어디에서 event.preventDefault();? **

+0

'function (e) {e.preventDefault(); }'일반 POST를 중지하려면; 그런 식으로 JavaScript를 사용할 수있는 경우 동작을 제어 할 수 있습니다. – kurttheviking

+0

JQuery (저는 MooTools를 사용합니다)를 약간 알고 있지만 스크립트의 시작 부분에서 event.preventDefault()를 사용해야한다고 생각합니다. MooTools의 경우,이 메소드는 이벤트의 기본 액션을 막아 주므로 어떤 식 으로든 다음 작업을 방해하지 않습니다. –

답변

4

글쎄, JS가 제출 이벤트에 첨부해야합니다. 이 경우 다음과 같이 자연스럽게 수행하는 것을 막을 수 있습니다.

$('#form_id').submit(function(event) { 
    event.preventDefault(); 
    // use jQuery's ajax() method here to do what you want 
}); 
+0

이미'submit' 이벤트에 접속했다면 브라우저는이 답변에서 제시하는대로'event.preventDefault()'를 사용하지 않는 한 둘 모두를 수행합니다 (js를 실행 한 다음 정상적으로 전송합니다). – bfavaretto

+0

두 번째 줄에주의를 기울였습니까? event.preventDefault()를 추가하면; 원본 HTML 동작을 표시하지 않습니다. – Steve

+0

죄송합니다. 처음 보았습니다 ... 코드를 맨 위로 업데이트했습니다. 어디에서'event.preventDefault();'를 넣을까요? – adamdehaven

2

자바 스크립트가 먼저 실행되어 둘 것, 그것으로 당신이 양식을 보내는 일반 (HTML 방식을)이 표시되지 않도록 가능성이있다.

  • 양식에 'onSubmit'이벤트를 첨부 :

    하지만 이러한 단계를 수행 할 수있는 자바 스크립트 간단한 일반에 사용하는 프레임 워크에 따라 작업을 수행하는 방법에는 여러 가지가 있습니다.

  • 양식의 "일반 제출"(HTML 방식)을 보류하려는 경우 은 거짓을 반환합니다.
+0

정상적인 HTML 동작을 어떻게 억제 하시겠습니까? 다른 말로하면 Javascript를 사용하도록 설정하면 어떻게 강제로 제출합니까? – adamdehaven

+0

내가 내 대답은 아래에 제안한 것처럼, 당신은 event.preventDefault()와 같은 뭔가를 통해 JS에서 정상적인 HTML 작업을 억제; – Steve