2012-06-04 3 views
0

페이지를 다시로드하지 않고 양식을 제출하고 $ .post를 사용하여 외부 PHP 파일에 데이터를 전달하고 싶습니다. 양식 제출시 페이지를 다시로드하지 못하게하는 데 문제가 있습니다. 제출 버튼을 클릭하면 다시로드를 취소 할 수 있습니까?양식을 제출 취소 기본 동작 jQuery Mobile

<script> 
    $(document).ready(function(e){ 
     $("#formajax").live("submit", function(e){ 
      var $this = $(this); 
      e.preventDefault(); 
      $.post("process.php", $this.serialize(), function(data){ 
       alert("DATA PASSED!"); 
      }); 
      return false; 
     }) 
    }) 
</script> 

<form method="post" action="" id="formajax"> 
    <input type="text" id="samplefield" name="samplefield" value=""/> 
    <input type="submit" value="Submit"/> 
</form> 

감사 : 여기

코드입니다!

+1

사용중인 jQuery 버전이 확실하지 않지만 .live()가 1.7에서 사용되지 않으므로 .on()으로 이동하는 것이 좋습니다. 또한 jQuery 문서에서는 이전 버전의 jQuery에서는 .delgate()가 .live()보다 바람직하다고 말합니다. – patrickn

답변

1

live 메서드가 jQuery에서 수행하는 작업에 익숙하지 않지만 문제의 근원 인 것 같습니다. 내 테스트에서 livebind으로 바꾸면 페이지가 다시로드되지 않고 "DATA PASSED"프롬프트가 나타납니다.

<script> 
      $(document).ready(function(e){ 
        $("#formajax").bind("submit", function(e){ 
          var $this = $(this); 
          e.preventDefault(); 
          $.post("index.php", $this.serialize(), function(data){ 
            alert("DATA PASSED!"); 
          }); 
          return false; 
        }) 
      }) 
    </script> 

    <form method="post" action="" id="formajax"> 
      <input type="text" id="samplefield" name="samplefield" value=""/> 
      <input type="submit" value="Submit"/> 
    </form> 
+0

그건 이상한데, 전에는 bind로 라이브를 대체하려고했지만 아무 소용이 없습니다. 그건 그렇고, 노력에 감사드립니다! –

관련 문제