Как запретить JQuery ajaxForm () обновлять страницу?

У меня есть форма, которую я успешно отправлял без обновления страницы с помощью .ajax (), но я изменил свою форму, включив поле загрузки, и она не загружается. Поэтому я попытался использовать метод ajaxForm (), который работает, т.е. он публикует и загружает, но обновляет страницу. Как мне остановить обновление страницы?

Я попытался вернуть false, и это полностью останавливает отправку.

Это то, что у меня есть

        var options = {
            target:     '#post',
            url:        '<?php echo $linkr; ?>',
            success:    function() {
                $("#post").load("<?php echo $linkr; ?>");
            }
        };
        $("form").submit(function () { 
        $(this).ajaxForm(options); 
        return false;
        });

Этот код переходит на пустую страницу, но публикует и загружает:

             var options = {
                target:     '#post',
                url:        '<?php echo $linkr; ?>',
                success:    function(result) {
                    $("#post").html(result);
                }
            };
            $("form").ajaxForm(options); 

Повторюсь, мне нужно, чтобы он размещал и загружал БЕЗ обновления страницы. Использование .ajax () выполняет это, но не загружает. Установка preventDefault не работает, или, возможно, я неправильно ее использую.


person user1682858    schedule 19.09.2012    source источник
comment
почему ты снова загружаешь ссылку ?? load (‹? php echo $ linkr;?›);   -  person swapnesh    schedule 19.09.2012
comment
В этом нет необходимости, это рудимент моего предыдущего коида, который не загружался на той же странице.   -  person user1682858    schedule 19.09.2012


Ответы (3)


используйте preventDefault()

$("form").submit(function (e) { 
    e.preventDefault();
    $(this).ajaxForm(options); 
});
person John Conde    schedule 19.09.2012
comment
это означает отправку всей формы. Я вернулся к предыдущему состоянию, которое работает. Код теперь просто использует ajax (), но загрузки нет, мне все еще нужна загрузка - person user1682858; 19.09.2012

Попробуйте что-нибудь подобное и дайте мне знать тогда -

   var options = {
        target:     '#post',
        url:        '<?php echo $linkr; ?>',
        success:    function(result) {
            $("#post").html(result);
        }
    };
person swapnesh    schedule 19.09.2012

В основном ваша проблема в том, что браузеры не поддерживают нормальную загрузку файла без перезагрузки страницы. Однако это возможно с использованием HTML5 или flash.

Вы можете прочитать это руководство, чтобы получить некоторые знания о том, как реализовать загрузку файла ajax с помощью HTML5 http://net.tutsplus.com/tutorials/javascript-ajax/uploading-files-with-ajax/

или вы можете использовать такие плагины, как http://www.uploadify.com/

person Giedrius    schedule 19.09.2012
comment
как насчет использования iframe и ajaxForm ()? это не работает? многие сайты загружают материалы без видимого обновления страницы - person user1682858; 19.09.2012
comment
с iframe google.co.uk/ Но я никогда не делал этого один, и это выглядит довольно пугающе. Я предлагаю реализовать HTML5 с откатом к flash или простой загрузкой для браузеров, которые не поддерживают HTML5. - person Giedrius; 19.09.2012