0

私は3つの単純な機能を持っています

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 に答える