我有一个使用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"));
但是在我的页面加载后立即调用该函数。我做错了什么?
答案 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"));