0

我有三个简单的功能

var loadPoints = function(successCallback, errorCallback) {
    $.ajax({
        method: 'get',
        url: '/admin/graph/get-points',
        dataType: 'json',
        success: successCallback,
        error: errorCallback
    });

}

var successLoadPoints = function(points){
  console.log('load ok');
  //console.log(points);
//  $.each(points,function(i, item){
//      console.log(points[i]);
//      
//  });

}
var errorLoadPoints = function ()
{
    console.log('error with loading points');
}

我将函数 loadPoints 绑定到按钮上的单击事件

$("button#viewPoints").bind(
                    'click', loadPoints(successLoadPoints,errorLoadPoints)
                    );

但是函数 loadPoints 是在没有点击事件的情况下执行的。为什么?如何解决这个问题?

4

1 回答 1

2

您当前的代码在您想要绑定它时调用,立即触发 ajax 请求。 loadPoints

您的函数应返回一个单击处理函数,该函数将使用传递的处理程序来处理成功和错误。这个返回的函数将在点击时被调用。

var loadPoints = function(successCallback, errorCallback) {
    return function (event) {
        $.ajax({
            method: 'get',
            url: '/admin/graph/get-points',
            dataType: 'json',
            success: successCallback,
            error: errorCallback
        });
    };
}

$("button#viewpoints").on("click", loadPoints(successHandler, errorHandler));
于 2013-05-05T20:25:40.243 回答