使用Jquery(ajax)防止页面重新加载的最佳方法是什么?


What is the best way to prevent page reload using Jquery(ajax)?

总结:我有一个:

1) 主页

(主页.php)2) 简单.js脚本文件(仪表板.js)3) 另一个简单的.php文件 (form1.php)4)进程.php,处理.js文件发送的信息的文件(process.php)

就像 tumblr 一样,我正在尝试重新创建相同的"导航"体验 - 单击几个选项,用新代码替换主面板,并在填写某个表单时,将该信息发送到 BD 并在主表单中显示结果.php

一切都很顺利,但最后一步。单击导航按钮(main.php),通过javascript(仪表板.js+ form1.php)引入新表单,填写该表单后,我单击按钮,而不是不重新加载页面(jquery->ajax),它将我发送到进程.php文件并向我显示结果。

我尽量不使用"返回 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;
});

您尚未定义event

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

您需要将第一行更改为:

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

否则,函数内的event变量是未定义的。

尝试这样做

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

或者从任何地方删除 event.preventDefault(),在这个函数结束之前,只需使用 return false

这应该有效

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