2012-04-21 15 views
0

このjQuery JSが実行のために呼び出されているにもかかわらず、なぜajax呼び出しを行っていないのかを調べようとしています。Rubyのレール - jQuery JSが実行されていますが、ajaxコールを作成していません。

私はコントローラのメソッドにajax GETリクエストを行うためにこのボタンを持っていますが、メソッドは部分的にレンダリングします。ボタンをクリックすると、コンソールにリクエストが表示されませんが、ブラウザにアラート「テスト」が表示されます。
私は、Ajax呼び出しの他のtupesのために働く他のパラメータと同じJSを持っているので、ただちにコピーして、必要なすべてのパラメータを変更しました。どちらもコンソールにエラーが表示されません。私のルートとIDの名前は良いですし、確認されています。私がここで紛失しているのは何ですか?

view - 注:このボタンは別のajaxでレンダリングされ、その部分は機能します。

<%= button_tag "Add/Remove", :id => "add_remove_button", :onclick => "javascript:add_remove();" %> #note: this is buried under div tags in a html table 

JS-

function add_remove(){ 
$('#add_remove_button').click(function() { 
     $.ajax({ 
     type: 'GET', 
     url: "/item/add_remove", 
     success:$('#view_item').html(data) 

     /*function(){ }, 
     data:$('#test').serialize(), 
     error: function(){ }, 
     success: function(data){ }, 
     complete: function(){ }*/ 
     }); #No ajax call made 
/*return false;*/ 
}); 
alert('test'); #I get this alert 
} 

答えて

1

あなたは常にalert()click()ためには、非同期であることがわかります:あなたがクリックするまでクリックして渡さfunction()内のコードが実行されませんが、add_remove()の残りがします呼び出されます。あなたのボタンにadd_remove()をアタッチ

  1. :onclick => ...を使用する:

    はここで実際にAJAX呼び出しが行われない理由を説明し、あなたのコードで何が起こっているかです。

  2. ボタンをクリックすると、add_remove()が呼び出され、別のクリックコールバックがボタンにアタッチされます。その後、add_remove()alert()となります。ここではAJAXコールは発生せず、新しいクリックハンドラを追加してアラートを送信するだけです。
  3. ボタンをもう一度クリックすると、3回目のクリックコールバックがボタンに追加されます。ただし、ボタンを初めてクリックしたときにクリックハンドラをアタッチしたので、ここにAJAXリクエストが表示されます。
  4. これを3回クリックすると、今度は2回のAJAXリクエストが表示され、合計3回のAJAXリクエストが発生します。

実際にしたいことがあります。削除:onclickの=> ...]ボタンから:あなたはjqueryの-登録・コールバックを

$(function(){ 
    $('#add_remove_button').click(function() { 
    $.ajax({ 
     type: 'GET', 
     url: "/item/add_remove", 
     success: function(data) { $('#view_item').html(data); }, 
     data: $('#test').serialize(), 
     error: function(){ }, 
     success: function(data){ }, 
     complete: function(){ } 
    }); 
    return false; 
    }); 
}); 
0

アップミキシングされていますページが最初にロードするとき

<%= button_tag "Add/Remove", :id => "add_remove_button" %> 

は、ボタンにクリックイベントをアタッチスタイルと古いイベントハンドラの属性です。そこで、add_remove関数を呼び出すときに登録をトリガーしました。

:onclickのものを削除してfunction add_remove(){ ... }

関連する問題