2013-03-07 24 views
0

我是Rails的新手,我試圖在application.js中調用非常簡單的ajax調用。簡單的jQuery ajax調用不能用於rails

下面的代碼:

function login(loginUrl) { 
    alert(loginUrl); 

    $.ajax('http://www.w3schools.com/jquery/demo_test.txt', {success: function (result) { 
     alert(result); 
    }}); 
} 

當函數被調用時,第一次警報效果很好。但是,似乎下面的ajax調用永遠不會通過,第二個警報從不執行。我在w3school.com上試過這個代碼,它運行良好。我真的很困惑爲什麼這個簡單的代碼不適用於Rails。

任何人都可以幫我嗎?

+1

這是因爲AJAX的瀏覽器限制,叫做'同源Policy'的http://en.wikipedia.org/wiki/Same_origin_policy – 2013-03-07 04:35:34

+0

@Cypher請進行編輯比單個錯字更實質。您正在編輯的問題也存在很多其他可以同時修復的錯誤。 – doppelgreener 2014-05-08 04:40:45

+0

@JonathanHobbs我只是修復標題,因爲太多的問題一個一個的審查,這個想法是,與標題安排這些問題可用於谷歌 – TlonXP 2014-05-08 04:44:24

回答

0

這是因爲瀏覽器限制名爲Same Origin Policy。它阻止了javascript發送ajax請求到一個不同於它被加載的域。

在你的情況,你試圖訪問一個資源(http://www.w3schools.com/jquery/demo_test.txt)主辦的http://www.w3schools.com但發送請求頁面不是來自這就是爲什麼Ajax請求不能正常使用相同的域。

如果你看看你的瀏覽器的控制檯,你可能會看到一個相同的錯誤。

同源策略的解決方案是使用jsonpWhat is JSONP all about?),但約束是服務器應該支持jsonp。

+0

謝謝。你是對的。 – user2142709 2013-03-07 04:41:37

+0

檢查您的瀏覽器控制檯是否有任何錯誤 – 2013-03-07 04:42:23

+0

我再次嘗試,如果我用loginUrl替換外部http地址,它會起作用。非常感謝! :-) – user2142709 2013-03-07 04:45:56