Jquery ajax按钮点击事件为什么会触发两次?

6
我有一个员工页面,显示了员工列表并提供编辑选项。点击编辑按钮时,使用 jquery-ajax 从服务器获取数据。问题是当我点击编辑按钮时,事件会触发两次。
我正在使用单独的 JavaScript 文件,并将该文件引用到主页中。该脚本在移动到单独的 JavaScript 文件之前运行正常。 enter image description here Jquery 脚本如下:
  //ajaxGet on edit button click
$(document).on('click', '.editRole', ajaxGet);

 var ajaxGet = function (e) {       


    var spinner = $(this).parent('div').find('.spinner');
    var href = $("#editMenuSettings").data("url");
    var menuRoleId = $(this).data('id');

    spinner.toggle(true);

    var options = {
        type: "GET",
        url: href,
        data: { menuRoleId: menuRoleId }
    };

    $.ajax(options).success(function (data) {
        spinner.toggle(false);
        $(".modal-body").html(data);
        $(".modal").modal({
            backdrop: 'static'
        });
    });

    $.ajax(options).error(function (data) {
        spinner.toggle(false);
        toastr.error("Oops..Some thing gone wrong");
    });

    return false;

};
1个回答

15

你调用了$.ajax两次。

在这些行中:

$.ajax(options).success(function(data)...

$.ajax(options).error(function(data)...

实际上您需要进行两个不同的AJAX调用 - 一个只有success回调,另一个带有error回调。

在您的情况下,您的调用应该像这样:

var options = {
    type: "GET",
    url: href,
    data: { menuRoleId: menuRoleId }
};

$.ajax(options)
    .success(function (data) {
        spinner.toggle(false);
        $(".modal-body").html(data);
        $(".modal").modal({
            backdrop: 'static'
        });
    })
    .error(function (data) {
        spinner.toggle(false);
        toastr.error("Oops..Some thing gone wrong");
    });

return false;

它将把这两个回调函数设置为单个 AJAX 调用并执行该调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接