1

基本的に、ページ全体をリロードせずに、ボタンをクリックしたときにアラートを作成したいと考えています。

私の見解に:

:javascript
  function ajax_test1(field)
  {
      var xmlhttp;
      if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
      }
      else
      {// code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      }

      xmlhttp.open("GET", "test_ajax.xml?code=" + field.value, false);
      xmlhttp.send();
      xmlDoc=xmlhttp.responseXML;
      alert(xmlDoc.getElementsByTagName("message")[0].childNodes[0]);
  }

= button_to 'test ajax', :remote => true, :onclick => "ajax_test1(this);"

私のコントローラーに

  def test_ajax
    @test = {message:'Hello there!'}
    render :xml => @test
  end

ボタンをクリックすると、ページが次の URL でリロードされます。

http://localhost:4242/test?onclick=ajax_test1%28this%29%3B&remote=true

どうすればこれを修正できますか?

4

2 に答える 2

1

falseデフォルトの動作 (実際のクリック) の発生を停止するには、onclick イベントを返す必要があります。

jQuery を使用している場合、この.preventDefault()メソッドはデフォルトのイベント動作を防止するための優れた方法ですが、手巻きの JavaScript では、少し複雑にする必要があります。

= button_to 'test ajax', :remote => true, :onclick => "ajax_test1(this); return false;"
于 2013-10-31T15:09:32.267 に答える
0

私はこれを変更しました:

= button_to 'test ajax', :remote => true, :onclick => "ajax_test1(this);"

これに:

 = button_to_function 'test ajax', 'ajax_test1(this)'

そしてそれはうまくいきました!

于 2013-10-31T15:22:23.987 に答える