2015-06-13 44 views
0

我試圖用JQuery .getXmlHttpRequest得到數據,但看起來他們都失敗了。Google是否不接受Spreadsheets中的ajax?

我正在試圖在電子表格中創建的模式對話框中執行此操作。

有沒有什麼不對,或者我在嘗試之前必須做的任何程序?


詳情:

1 - 模式對話框的工作(我的Ajax代碼之前把消息顯示精細,.get後的消息也是精細
2 - 我知道谷歌​​英寸在服務器端,但我感興趣的只是現在的客戶端


代碼:

1 - jQuery的獲得:

alert("test"); 

$.get("http://www.w3schools.com/jquery/demo_test.asp", function(data,status){ 
      alert(status + " /// " + data); //never shown 

    }); 

alert("after get"); //shown 

2 - 的HttpRequest:

var Req = new XMLHttpRequest(); 
var URL2 = "http://www.w3schools.com/ajax/ajax_info.txt"; 
Req.open('GET', URL2, false); 
alert("Got2"); 
Req.send(); 
alert("sent2"); //never shown 
alert(Req.responseText); //never shown 

回答

2

我假設你正在使用自定義的HTML代碼的模態對話框?

就我所知,您的Javascript代碼沒有問題,但是您的XMLHttpRequest(並因而依賴於XMLHttpRequest內部的JQuery.get)因爲權限問題而失敗。您可以在瀏覽器的開發者控制檯中看到錯誤。

首先,使用HTTPS加載Google Spreadsheets,並且(至少對於我測試過的Chrome),您不允許通過XMLHttpRequest從HTTPS頁面加載不安全的HTTP資源(想法是,如果端點不安全,那麼您不能保證通過XMLHttpRequest獲得的任何數據不是惡意攻擊者所插入的數據,而不是實際的數據)。

其次,默認情況下,XMLHttpRequest僅限於同一個域。這意味着您只能訪問加載腳本代碼的域[some random string].googleusercontent.com上的資源。爲了對另一個域執行XMLHttpRequest(稱爲跨源XMLHttpRequest),提供資源的服務器必須發送特殊的HTTP報頭,指明服務器允許這樣的跨源訪問。更多細節在這裏:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS。因此,除非w3schools服務器發送正確的標題,否則不能在這些URL上使用XMLHttpRequest。

因此,如果您要訪問資源,您可能需要確保通過HTTPS提供服務併發送正確的標頭。正確執行上述操作的資源示例是Yahoo Query Language endpoints。使用下面的URL會的工作,例如:

https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D'http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FYahoo'%20and%20xpath%3D'%2F%2Ftable%2F*%5Bcontains(.%2C%22Founder%22)%5D%2F%2Fa'&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys 

或者,只是使用谷歌的服務器通過​​訪問的資源!