jQuery $ .ajax()调用从Rails 3控制器获取JSON导致304 Not Modified?

Ale*_*lin 3 ajax jquery ruby-on-rails ruby-on-rails-3

在application.js我有:

$("#combo_box").live('change', (function() {
    $.ajax( {
                    url: '/my_controller/get_data',
                    data: {id: some_id},
                    success:  function(data){ do_stuff_with_data(data) }
             }
           )
    } ) )
Run Code Online (Sandbox Code Playgroud)

在my_controller代码中我有:

  def get_data
    id = params[:id]

    @data = MyModel.DoSomeStuff(id)

    respond_to do |format|
      format.js { render :json => @data}
    end
  end
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,函数success只运行一次(我认为),其余时间Firebug会报告304 Not Modified组合框更改何时触发ajax调用.

这是如何运作的?谢谢!

mu *_*ort 7

$.ajaxGET 的默认方法是:

type String
默认值:'GET'

所以你的$.ajax电话正在做一个GET请求,有人可能正在缓存它.尝试添加cache: false您的$.ajax选项:

cache Boolean
默认值:true,false表示dataType'script'和'jsonp'
如果设置为false,则会强制请求的页面不被浏览器缓存.