2010-12-29 5 views
1

제출시 ajax 호출을하고 싶습니다.jQuery : form and ajaxcall

<form id="editMail" action="" method="post"> 
    <input name="user_email" type="text" value="mail" maxlength="50" id="user_email" style="width:200px;"> 
    <input name="submit" type="submit" id="submit_editMail" value="Ändra"> 
</form> 


    $('#editMail').submit(function() { 
      $.ajax({ 
      type: "POST", 
      url: "misc/email/activate.php", 
      data: { action: 'edit', user_email: new_usermail }, 
      success: function(r){ 
      if(typeof(r.error) != 'undefined') { 
      if(r.error != ''){ 
      alert(r.error); 
      } 
       }else{ 
      alert('OK'); 
     } 
     }); 
    }); 

하지만 여전히 아무 일도 일어나지 않고 있지만, 아약스 호출을하지는 않지만 단지 페이지를 참조합니다. 나는 onClick = "return false;"를 추가하려고 시도했다. 제출 버튼으로 이동하지만 아무 일도 일어나지 않습니다.

답변

1

핸들러에 false을 반환하십시오. 그렇지 않으면 POST 요청이 시작되고 기본 양식 제출이 수행됩니다. 또한 다음과 같이 이벤트 객체의 preventDefault 기능을 사용할 수 있습니다 :

$('#editMail').submit(function(event) { 
    $.ajax({ 
     type: "POST", 
     url: "misc/email/activate.php", 
     data: { action: 'edit', user_email: new_usermail }, 
     success: function(r){ 
      if(typeof(r.error) != 'undefined') { 
       if(r.error != ''){ 
        alert(r.error); 
       } 
      }else{ 
       alert('OK'); 
      } 
     } 
    }); 
    event.preventDefault(); 
}); 

편집 :

페이지로드가 완료되기 전에 스크립트가 실행되지되어 있는지 확인합니다. 이처럼 ready 핸들러에서 스크립트를 마무리해야 할 수도 있습니다

$(document).ready(function() { 
    $('#editMail').submit(function(event) { 
     $.ajax({ 
      type: "POST", 
      url: "misc/email/activate.php", 
      data: { action: 'edit', user_email: new_usermail }, 
      success: function(r){ 
       if(typeof(r.error) != 'undefined') { 
        if(r.error != ''){ 
         alert(r.error); 
        } 
       }else{ 
        alert('OK'); 
       } 
      } 
     }); 
     event.preventDefault(); 
    }); 
}); 
+0

여전히 또한 거짓 수익률 시도 제출; 그리고 나는 아약스 호출을 보지 않는다. 스크립트가 실행되지 않고 있다고 생각한다. 셀렉터가 맞다. – Karem

+0

선택자가 맞습니다. 'submit' 이벤트 핸들러를'form' 엘리먼트에 바인딩합니다. 스크립트가 실행 중인지 확인하기 위해 처리기에'alert '를 넣으십시오. 페이지가로드 된 후 JavaScript가 실행되지 않아서 선택기가 양식 요소를 찾지 못하고있을 수 있습니다. – Jacob

+0

아, 그리고 @jondavidjohn이 올바른지, 스크립트 오류가 발생했습니다. 내 견본 스크립트에서 문제가 해결되었습니다. – Jacob

1

당신은) (당신의 .submit의 닫는 대괄호 그룹을 누락;

또한 불필요한 경우); 성공 '기능을 닫습니다.

기본 제출 작업을 방지하기 위해 필요한 "return false"도 추가되었습니다.

은 수정 :

$('#editMail').submit(function() { 
    $.ajax({ 
     type: "POST", 
     url: "misc/email/activate.php", 
     data: { action: 'edit', user_email: new_usermail }, 
     success: function(r){ 
      if(typeof(r.error) != 'undefined') { 
       if(r.error != ''){ 
        alert(r.error); 
       } 
      }else{ 
       alert('OK'); 
      } 
     } 
    }); 
    return false; 
}); 
+0

답변 해 주셔서 감사합니다! – Karem

+0

그래서 문제를 발견 한 다음 코드에 내 답변을 통합 한 사람의 대답을 정확하게 표시합니까? 약한. – jondavidjohn