您好 我有一个函数,一旦单击一个元素,就会调用ajax。我使用这段代码:
$(document).ready(function()
{
function ajax_call(offset, length) {
$.ajax({method: "get",
url: "file.php",
data: "offset="+ offset,
success: function(returnedData)
{
$("#content").html(returnedData);
}
});
}
$("#profile").click(ajax_call(0, 1000));
});
问题在于这一行:
$("#profile").click(ajax_call(0, 1000));
当我将参数传递给ajax_call函数时,该函数在页面加载时运行,无需任何用户干预,但是当我删除这样的参数时:
$("#profile").click(ajax_call);
仅在单击元素时才调用该函数。我已经研究了几个小时这个问题,但没有运气
答案 0 :(得分:1)
这会立即调用函数ajax_call(0, 1000)
并将返回值作为事件处理程序传递。
您必须将其包装在匿名函数中:
$("#profile").click(function() {
ajax_call(0, 1000);
});
每当你有functionname()
时,你实际上正在调用该函数。 functionname
代替(不带括号)为您提供函数的引用。因为你不能只将ajax_call
传递给click
,所以你必须将它包装在另一个函数中。
因此匿名函数function(){...}
作为事件处理程序传递,当它被调用时,它会执行ajax_call(0, 1000)
。