javascript - event.preventDefault 阻止 ajax 调用

标签 javascript jquery ajax

我一直在尝试让 ajax 调用在由 onclick 事件触发的函数内部工作。当我使用 event.preventDefault 时,页面没有重新加载但 ajax 调用不起作用,没有数据添加到我的数据库中。当我注释掉该行时,页面会重新加载,但其他一切正常。

function clickFunction(elem) {
    var var1 =  elem.id;
    var var2 =  var1.split("_");
    //  elem.preventDefault();


    if (var2[0] == "Add") {
        if (var2[1] == "Calls") {
            console.log("Calls");
            console.log(var1);
            event.preventDefault();
            var data = $(this).serialize();
            $.post('progressSheetDynamic', data).done(function (response){
                $(".1").html(parseInt($('.1').html(), 10)+1);
                Calls.update(50);

            });
        }
    }
}

HTML代码

<form action="{{ route("progressSheetDynamic") }}" method="post" id= {{ $addID }}>
    <input name="increment" value="increment" type="hidden"> </input>
    <input type="hidden" name="id" value= {{$activities}} >
    <button type="submit" class="styleHover styleButton" onclick="clickFunction(this)" id= {{ 'Add_'.$newText }}> + </button>
</form>

我检查了日志,函数进入了 if 语句。我还尝试通过执行 elem.preventDefault(); 在按钮单击事件上使用 preventDefault;但这不起作用。使用 return false 也不行。

最佳答案

问题似乎与这一行有关:

var data = $(this).serialize();

应该是这样的:

var data = $(elem.form).serialize();

函数中的 this 值将是对 window 对象的引用,而 elembutton 所以 elem.form 将是序列化 的表单(假设这是您想要的数据)

并且如注释中所述,event 仅在某些浏览器中被定义为全局变量,因此您需要在属性中传递 event 并在功能安全。

属性:

onclick="clickFunction(this, event)"

功能:

function clickFunction(elem, event) {
  // ...
}

请注意,IE8 及更低版本没有 event.preventDefault(),但您可以设置 event.returnValue = false

关于javascript - event.preventDefault 阻止 ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37142082/

相关文章:

javascript - 如何使用 jQuery 在点击时移动图片

javascript - 在 AJAX 页面上刷新 google adsense

javascript - q.all 似乎表现不同,为什么?

javascript - 使用 ionic 的第一步是在按钮点击/单击时获得弹出警报

javascript - 固定位置在移动浏览器中不起作用

Jquery单选按钮提交值onclick

javascript - 从数组中仅获取 1 个具有 2 个相似对象的对象

javascript - Angularjs 绑定(bind)到 Ajax 返回值

jquery - 如果用户访问用于 ajax 请求的页面,是否加载主页?

javascript - Html5shiv 不工作