2016-11-01 6 views
0

のページのロード時に呼び出された私は、Ajaxを使用してサーバにデータを送信機能があります。のjavascript/jqueryの機能は、代わりにonclickの

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
あなたのコードで

$("#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

これは、関数をイベントハンドラとして渡す必要がありますが、渡す代わりにこの関数を呼び出すためです。

これは動作するはずです:

$("#to-my-account").on("click", firstScanStatIncrement.bind(window, "account_page")); 
関連する問題