0

最初に $.ajax を使用してこれを実行しようとしましたが、成功しませんでした。.load は私をうまく扱ったので、それを使用しました。ただし、$.ajax に付属するコールバックが必要であることがわかりました。

 jQuery ->
   fl = $("#flight_flightlesson_id")
     fl.on "change", ->
       $("#gradable_items_container").load("gradable_items_inputs?lesson=#{fl.val()} #ajax_gradable_items_for_lesson_content")

選択したレッスン入力が変更されると、lesson_id が URL パラメーターとして flight_controller アクション gradable_items_inputs に渡され、同じ名前のテンプレートが入力され、そのコンテンツがリロードせずにブラウザーに読み込まれます。よく働く。

ただし、これらのコールバックを使用したい

  beforeSend: ->
    $("#ajax_tell").addClass "is-fetching"

    //success: (response) ->
    //  $("#gradable_items_container").html(response)

    complete: (response) ->
      $("#ajax_tell").removeClass "is-fetching"
      alert "complete"

    error: ->
      $("#{ajax_tell}").html "<p>ERROR</p>"
      alert "error"

既存の .load をこの $.ajax に変換するにはどうすればよいですか?

4

2 に答える 2

1

$.load()$.ajax()いくつかのオプションがすでに設定され ているだけでなく、 ajaxの成功時にメソッドをdataType:'html'使用して応答をセレクターに自動的に入力する便利なメソッドラッパーです。html()

$.post(), $.get(), $.getJSON()などについても同様です

APIに従って、$.ajax()同じことをもう少し柔軟に行うために必要なオプションを使用してください。

唯一の非常に重要なオプションは、メソッドを一致させるためにurl使用する成功または完了または完全なコールバックです。API は、他のオプションがある場合はそのデフォルトを概説し、あちこちにたくさんの例がありますhtml()load()

于 2013-10-27T17:22:54.523 に答える