2013-09-13 2 views
1

Резюме: У меня есть:Каков наилучший способ предотвратить перезагрузку страницы с помощью JQuery (ajax)?

1) Главная (main.php) 2) простой .js файл сценария (dashboard.js) 3) один другой простой .php файл (form1.php) 4) process.php, файл, обрабатывающий информацию, отправленную файлом .js (process.php)

Как и tumblr, я пытаюсь воссоздать один и тот же «навигационный» опыт - щелкнув несколько параметров, заменив основную панель с новым кодом и при заполнении какой-либо формы отправьте эту информацию в BD и представите результат в Main.php

Все идет хорошо, но последнее шаг. После нажатия кнопки nav (main.php), приведя новую форму через javascript (dashboard.js + form1.php), заполнив эту форму, я нажимаю кнопку и вместо того, чтобы не перезагружать страницу (jquery-> ajax), он отправляет меня в файл process.php и представляет мне результат.

Я попытался не перезагрузить «return false» и «event.preventdefault()» и все тот же результат.

JS код

 $('form.ajax').on('submit', function() { 
    event.preventDefault(); 
    var that = $(this), 
    url = that.attr('action'), 
    type = that.attr('method'), 
    data = {}; 

    that.find('name').each(function(index, value) { 

     var that = $(this), 
     name = that.attr('name'), 
     value = that.val(); 

     data[name] = value; 

    }); 


    $.ajax({ 
     url: url, 
     type: type, 
     data: data, 
     success: function(html){ 
        event.preventDefault(); 
        $("ol#list-feed").append(html); 
        document.getElementById('set-width1').value=''; 
        document.getElementById('tags').value=''; 

       } 


    }); 
    event.preventDefault(); 
    return false; 
}); 
+0

'$ ('form.ajax') на ('Submit', функцию (событие) {...});.' И использовать только первый preventDefault() и удалить return: false; –

ответ

3

Вы не определили event:

$('form.ajax').on('submit', function(event) { 
    event.preventDefault(); 
    //... 
}); 
0

Вы должны изменить первую строку:

$('form.ajax').on('submit', function(event) { 

в противном случае переменной event внутри функции не определено.

+0

Это правда, например, chrome pass 'event' неявно. Не уверен обо всех событиях и о том, что происходит для других браузеров. –

0

попробовать, как этот

$('form.ajax').on('submit', function(event) { 
    event.preventDefault(); 
    //do other works here 

} 

или удалить event.preventDefault() отовсюду и до конца этой функции просто использовать возвращение ложным.

+0

Я пробовал все 4 предложения/рекомендации и, к сожалению, это не сработало. Я забыл сказать, что на последнем шаге при вызове process.php этот должен вернуть обработку функции, определенной в другом файле (users.php). Итак, в конце process.php есть вызов load_posts(), и результатом этого является то, что я должен ожидать в main.php. Тем не менее, он не должен перенаправлять меня на process.php в первую очередь: \ – crowdfun

+0

попробуйте еще раз с удалением метода preventDeafult() ajax. –

0

Это должно работать

$('form.ajax').on('submit', function(event) { 
Смежные вопросы