2011-08-03 130 views
0

我是AJAX的新手,只是想確認一下:如果我將所有代碼放在桌面上的文件夾中,並且我使用AJAX在HTML中輸出文件內容,有可能通過AJAX訪問本地文件或文件應該在服務器上?使用AJAX讀取本地文件

我只是測試AJAX功能,第一次和我面臨的問題,因爲它顯示錯誤「拒絕訪問」的js文件

+0

本地文件? ajax請求用於通過HTTP檢索資源 – BiAiB

+0

嘗試請求相對路徑。否則,內容訪問策略會阻止您。 –

+0

AJAX的要點是從**客戶**發送請求到**服務器** –

回答

1

JavaScript是在客戶端的工作,但很少有機會所以它不能夠從客戶機訪問本地文件。

因此,您需要在服務器上顯示內容,而不是使用ajax並獲取div中的數據以顯示客戶端。

3

文件訪問被禁止在任何瀏覽器的JavaScript實現的開始。有人可以手動禁用瀏覽器中的「安全功能」。例如,對於Google Chrome,您必須以--disabled-web-security作爲命令行參數來啓動可執行文件。 Firefox可以禁用它的about:config

無論如何,如果您要爲公衆寫代碼,您完全不能依賴那個。但隧道盡頭有光線。 「新」Javascript File API已經在Chrome中可用,其他供應商將很快跟進我猜/希望。該API「正式」允許您的腳本讀取本地計算機上的文件。

8

出於安全原因,JavaScript對客戶端文件系統的訪問權限受到限制 - 考慮您是否希望(別人的)JavaScript讀取敏感文檔。

即使在試驗時最好使用真實的拓撲結構,也可以在服務器上提供服務器的信息,這些信息可以在真實系統中從服務器提供。

建立一個像Apache這樣的Web服務器來指向你的開發目錄非常簡單,所以「服務器」只是你的桌面。因此編輯/測試周期非常快。

+1

我在一個文件夾'my_project'中有我的離線項目。所以,現在我需要從我的index.html文件夾'my_project'請求一個xml文件。我不明白爲什麼這是安全可變性。如果我將我的項目上傳到服務器,並從我的index.html向服務器請求xml文件,爲什麼它不是?只是好奇。 – Chameleon

+1

@Chameleon:不同的是*誰*正在從該文件夾中讀取。在線情況下,* web服務器軟件*直接進行讀取,客戶端正在讀取*間接*。如果Web服務器缺乏適當的權限,它也會失敗。 – user7116

-1

我希望它有可能使用Ajax在本地訪問文件,我使用Mozilla Firefox進行了嘗試,並且運行良好。我創建了2個文本文件,並在同一個文件夾中進行調節。這是代碼。對不起,如果有任何錯誤。

function getXmlHttpRequestObject() { 
    if (window.XMLHttpRequest) { 
     return new XMLHttpRequest(); //Not IE 
    } 
    else if(window.ActiveXObject) { 
     return new ActiveXObject("Microsoft.XMLHTTP"); //IE 
    } 
    else { 
     alert("Your browser doesn't support the XmlHttpRequest object. Better upgrade to Firefox."); 
    } 
}   
var receiveReq = getXmlHttpRequestObject();  
function sayHello(fname) { 
    if (receiveReq.readyState == 4 || receiveReq.readyState == 0) { 
     receiveReq.open("GET", fname, true); 
     receiveReq.onreadystatechange = handleSayHello; 
     receiveReq.send(null); 
    }   
} 
function handleSayHello() { 
    if (receiveReq.readyState == 4) { 
     document.getElementById('span_result').innerHTML = receiveReq.responseText; 
    } 
} 

Here is the html code 
<select name="files" onchange="sayHello(this.value)"> 
<option value="">Select a file</option> 
<option value="file.txt">file.txt</option> 
<option value="file2.txt">file2.txt</option> 
<option value="ajax.html">Ajax.html</option> 
</select><br> 
<p>Contents of the file will be displayed below</p> 
<div id="span_result"></div> 
1

如果您只是想要進行測試,您可以嘗試在Chrome上禁用Web安全性,然後它應該工作。

相關問題