在页面加载而不是onclick上调用javascript / jquery函数

时间:2016-11-01 12:32:16

标签: javascript jquery ajax

我有一个使用ajax将数据发送到服务器的函数:

  function firstScanStatIncrement(a) {
    $.ajax({
      url: "/my_url",
      type: "get",
      data: {
        attr: a,
        report_action: "report_action"
      }
    });
  }

我希望在单击特定按钮时调用该函数。我是这样做的:

$("#to-my-account").on("click", firstScanStatIncrement("account_page"));

但是在我的页面加载后立即调用该函数。我做错了什么?

2 个答案:

答案 0 :(得分:2)

在您的代码中

$("#to-my-account").on("click", firstScanStatIncrement("account_page"));

立即调用上下文中的回调函数。因此,ajax调用在页面加载上运行而不单击dom元素。

点击dom元素后调用回调,代码就像

$("#to-my-account").on("click", function() {
    firstScanStatIncrement("account_page");
});

另一种方法

$("#to-my-account").click({param: "account_page"}, firstScanStatIncrement);

function firstScanStatIncrement(event){
    alert(event.data.param);
}

答案 1 :(得分:1)

这是因为您需要将函数作为事件处理程序传递,但是您调用此函数而不是传递。

这应该有效:

$("#to-my-account").on("click", firstScanStatIncrement.bind(window, "account_page"));