2011-10-30 27 views
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) } 
      } 
      ) 
    })) 

和my_controller代碼,我有:

def get_data 
    id = params[:id] 

    @data = MyModel.DoSomeStuff(id) 

    respond_to do |format| 
     format.js { render :json => @data} 
    end 
    end 

但由於某些原因在success函數只運行一次,(我認爲),其餘的時間當組合框更改觸發ajax調用時,Firebug報告304 Not Modified

這是如何工作的?謝謝!

回答

7

$.ajax的默認方法是GET:

字符串
默認: 'GET'

所以你$.ajax呼叫做一個GET請求,有人可能將其高速緩存。嘗試添加cache: false$.ajax選項:

緩存布爾
默認:true,爲的dataType「腳本」和「JSONP」
如果設置爲false,這將迫使請求的頁面不被緩存錯誤由瀏覽器。

+0

我沒有意識到,瀏覽器緩存get,非常有趣,這就是訣竅! –

+0

另外我想指出的是,jQuery將結果作爲字符串返回,直到我專門在ajax調用中設置dataType:'json',這讓我暫時停下了腳步。 –

相關問題