我有一個在Heroku中運行的Rails應用程序,以及一個使用Jquery Mobile的html文件。在Access-Control-Allow-Origin中遇到問題
Rails應用程序返回JSON數據(使用RABL),我的移動應用程序應該拿起並顯示。
這就是我正在做的,我正在給列表視圖提供響應的內容。很簡單。如果我使用Chrome,則控制檯將顯示錯誤訪問控制 - 允許來源不允許原始空值。如果我嘗試使用Firefox,控制檯上沒有錯誤,但數據也不會顯示,甚至不會顯示警報觸發器。
function getBuses(){
$('#content').append("<ul id='bus_list' data-role='listview' data-inset='true'</ul>")
$('#content').trigger("create");
//Se llama a la API para retornar todos los buses
$.getJSON('http://someapp.herokuapp.com/buses.json', function(data)
{
$.each(data, function(key, value)
{
alert(key + ":" + value);
$('#bus_list').append('<li id="'+bus.id+'">'+bus.numero_de_linea+'<li/>');
});
});
$('#bus_list').listview("refresh");
}
這是服務器響應:
[{"id":7,"numero_de_linea":"604"}]
我對訪問控制允許來源讀了一段時間了,但我不知道我必須做的,我應該改變我的服務器中的東西嗎?我正在瀏覽器上試用這個html文件,但它在我的手機上也無法正常工作。 當mobileinit
運行時,我已將$.support.cors
和$.mobile.allowCrossDomainPages = true;
設置爲true。
任何有關下一步該怎麼做的信息,將不勝感激。
編輯:如果您正在使用RABL,請記住在初始化程序中將變量enable_json_callback設置爲true。你必須從雙方啓用這個東西。
感謝響應。我應該在哪裏調用這個函數? – Sebastialonso
它應該是您在ajax調用中調用的action的'after_filter'。如果有幾個對rails應用程序的ajax調用,那麼這可以在'application_controller'中用作'after_filter'。 – Nerve
有關基於環境設置此方法的信息,請參閱https://stackoverflow.com/a/17815546/912563 – lightswitch05