Форма jQuery Ajax по-прежнему отправляет обновления страницы - PullRequest
0 голосов
/ 18 октября 2011

У меня есть довольно простой кусок кода jQuery AJAX, который должен отправлять форму без обновления страницы, но по какой-то причине он игнорируется и форма отправляется как обычно.

Код 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>

Ответы [ 3 ]

2 голосов
/ 18 октября 2011

Вам нужно будет добавить event.preventDefault(); перед вызовом ajax. Ваша функция должна быть изменена, как показано ниже:

$(".createEvent").live('click', function(event) { 
     event.preventDefault();
     .
     .
     .
     //ajaxCall
});
2 голосов
/ 18 октября 2011

Если вы хотите прекратить отправку формы, вам, вероятно, лучше:

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

Это лучше, потому что он также будет обрабатывать отправку, вызванную, например, клавишей Enter.

2 голосов
/ 18 октября 2011

это указание на ошибку JS в середине - которая обходит return false

...