2011-10-18 3 views
0

페이지 새로 고침없이 양식을 제출해야하는 매우 간단한 jQuery AJAX 코드가 있지만 왠지 무시되고 양식이 정상적으로 제출되고 있습니다.jQuery 아약스 양식은 여전히 ​​페이지 새로 고치기와 함께 제출합니다.

JQuery와 코드 :

$(".createEvent").live('click', function() { 

       $(".eventResult").html($("<img/>").attr("src", "<?php echo __FULL_PATH; ?>images/loader.gif").attr("id", "loader")); 
       $('.eventResult').show(); 
       var form = $(this).parents('form:first'); 
       var eventName = $("input[name='eventName']",form).val(); 
       var eventID = $("input[name='eventName']",form).id(); 

        var dataString = 'eventName ='+ eventName; 
        $.ajax({ 
        type: "POST", 
        url: "{site.createPageURL}"+eventID+"/event/", 
        data: dataString, 
        cache: false, 
        success: function(html) { 
        alert('done'); 
        $('.eventResult').html(html); 
        $('.eventForm').hide(); 
        updateBookingList(eventID);    

        } 
       }); 
       return false; 

     }); 

양식 :

<form id="eventForm_1318915800" method="POST" action="path_here..." name="eventForm"> 
<label for="eventName">Please enter a name for the event</label> 
<input id="1318915800" type="text" name="eventName"> 
<label for="submit">&nbsp;</label> 
<input class="createEvent" type="submit" value="Create event" name="submit"> 
</form> 
<div id="eventResult_1318915800" class="eventResult">&nbsp;</div> 
+0

리디렉션 또는 새로 고침을 위해 updateBookingList (eventID) 함수를 확인하십시오. – Prasanth

답변

2

이 중간에 JS 오류의 표시가 - 무시되는 return false

+0

완벽합니다. 정확하게 일어난 일입니다. 팁 주셔서 감사합니다 - 실제로 방화범이 Javascript 오류를 일으킬 수 있다는 것을 알지 못해서 결과적으로 매우 유용한 디버깅 방법을 선택할 수있었습니다. – Amo

2

당신은 추가해야합니다 ajax를 호출하기 전에 event.preventDefault();. 귀하의 기능은 다음과 같이 수정되어야합니다 :

$(".createEvent").live('click', function(event) { 
    event.preventDefault(); 
    . 
    . 
    . 
    //ajaxCall 
}); 
+0

+1 반환에 대한 preventDefault()에 대한 –

+0

이것은 키보드에서 트리거 된 제출을 막지는 못합니다. – njr101

+1

예. $ ("# eventForm_1318915800")을 사용하는 것이 더 좋습니다. live ('submit', function() {}) –

2

당신을 제출 양식을 중지하려면이하고 아마 더 나은 :

$("#eventForm_1318915800").submit(function() { return false; }); 

이것은 또한이 입력에 의해 트리거 제출할 처리 할 수 ​​있기 때문에 더 키 예를 들어.

관련 문제