2011-10-18 62 views
0

我有一个非常简单的jQuery AJAX代码片段,它应该提交没有页面刷新的表单,但由于某种原因它被忽略并且表单被正常提交。jQuery ajax表单仍然提交WITH页面刷新

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

完美,这正是发生的事情。感谢您的提示 - 我实际上并不知道Firebug可能会导致Javascript错误,所以我能够选择一种非常有用的调试方法。 – Amo

2

您需要添加在你调用ajax之前调用event.preventDefault();。你的函数应该如下修改:

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

+1 for preventDefault()over return false –

+0

这不会阻止从键盘触发的提交。 – njr101

+1

是的。最好使用$(“#eventForm_1318915800”)。live('submit',function(){}) –

2

如果你想停止的形式提交你可能会更好做:

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

这是更好,因为它也将处理一个提交由输入触发关键的例子。