2013-05-09 27 views
0

我有這樣的jQuery在我的Rails應用程序:如何操作由AJAX返回的JSON對象?

$('#rankings_link a').click(function(){ 
    $.ajax({ 
     dataType: 'json', 
     contentType: 'application/json', 
     url: '/rankings', 
     type: 'get' 
    }).done(function(received_data){ 
     for (var m = 0; m < received_data.length; m++) { 
     $('#rankings ol').append('<li>' + received_data[m] + '</li>'); 
     } 
    }); 
    }); 

在我的控制器中的排名方法的結束是:

:render => 'json' 

但是,當我點擊#rankings_link,它把我送到/rankings並顯示預格式化文本的這樣一個大的塊:

["Farag, Ali", "Harrity, Todd", ...] 

我希望能夠把每個元素(似乎是)該數組位於有序列表中。但顯然這不是發生了什麼,我不知道爲什麼。

想法?

回答

1

你需要停止的<a>默認操作(這是打開由href屬性指定的頁面)

$('#rankings_link a').click(function(e){ 
    e.preventDefault(); // <- this 
    // ... 
}); 
+0

但如果我這樣做,它不會使任何事情,因爲我追加在不同的數據頁。即我在主頁上,點擊該鏈接,如果我有peventDefault(),那麼它不會進入/排名頁面...知道我的意思嗎? – bclayman 2013-05-09 16:34:09

+0

@Mariogs,你想在'/ rankings'上執行那個JS代碼? – Dogbert 2013-05-09 17:29:41

0

嘗試發送到視圖之前驗證您的JSON。

最好先發送一些硬編碼的JSON。 Online JSON Viwer以很好的方式驗證JSON。

您也可以手動創建JSON並將其呈現爲文本,jQuery會將其作爲JSON返回。

ActiveSupport中有to_json方法,你也可以試試。

0

添加:remote => true爲紐帶PARAM,還要確保你在你的application.js:

//= require jquery 
//= require jquery_ujs