2011-03-29 63 views
1

我是jQuery(和AJAX)的新手,我試圖掌握get/post/ajax方法的工作原理。所以,我創建了一個簡單的.html頁面包含以下jQuery的語句:如何將jQuery.get()與完全限定的URL一起使用

function myImport() { 
    var url = '../rawdata.txt'; 
    $.get(url, function (data) {  
     $('#importedHtml').text(data); 
    }); 
} 

你會發現URL var設置一個名爲「rawdata.txt」本地文件。這個文件實際上包含了這樣的數據:

0,Sun 18:32:56,0, 
1,999 uS,1, 
2,4561 F,0, 
3,3.4,1, 
4,3.3,1, 
5,0.0%,0, 
15,0 G,1, 
16,0 G,1, 
19,18.55hrs,3, 
27,Setpoints,3, 
28,ON: 50.16hrs,0, 
29,Interlocked S,3, 
30,Interlocked S,3, 
31,Interlocked S,3, 

正如你可以看到,當myImport()函數被觸發時,獲得()方法抓住本地rawdata.txt文件,然後顯示該文件的內容一個html元素。所有這些工作正常。但是,我想使用.get()方法從活動Web服務器(而不是本地文件)中獲取數據,但是當我嘗試這樣做時,服務器沒有響應。我知道,當然,Web服務器已啓動並正確響應請求(通過常規瀏覽器)。所以,在這一點上,我不確定我是否正在使用.get()方法,或者其他方法。

例如:

更新jQuery的聲明是這樣的:

function myImport() { 
    var url = 'http://173.196.155.45/taco.cgi?F0=AV&F1=4564'; 
    $.get(url, function (data) { 
     $('#importedHtml').text(data); 
    }); 
} 

你會發現,唯一的區別是「網址」變量的值。 url var現在指向一個實時web服務器。 url請求會用類似於'rawdata.txt'文件中存在的數據的數據進行響應。

您會注意到,如果您訪問the live url,您將得到純文本(無HTML語法,頭文件等 - 僅僅是一串數據)的響應。但是,如果要運行jQuery示例,則.get()方法的「data」變量中不會有內容。

我是否在包含實時url的腳本中使用.get()方法錯誤?更具體地說,我如何使用jQuery獲取生活在this live url的數據?

回答

2

如果你的HTML文件是本地的,但是數據文件是遠程的,你就會犯「交叉源」安全策略。

這些需要從原始HTML文件的相同域提供AJAX請求。

要解決,或者:

  1. 使用JSONP,這違反了相關使用<script>標籤,或
  2. 看看從你的CGI腳本供應Access-Control-Allow-Origin頭的策略。
相關問題