2011-03-29 57 views
9

我正在嘗試執行ajax請求以獲取在Windows Wamp服務器上運行"http://localhost/"的內容。來自本地文件系統的jQuery Ajax請求(Windows文件:///)

劇本是從運行的東西像這樣:

file:///C:/my/path/index.html

我只是用一個標準的$就請求,試圖讓本地主機的內容:

$.ajax({ 
      type: 'GET', 
      url: 'http://localhost/', 
      success: function(data) { 
      alert('success'); 
      }, error: function (data) { 
      alert('failed'); 
      } 
    }); 

我不能讓它成功,雖然...似乎是本地文件系統或某事的一些問題。我不太確定。

+0

試試'/'爲url,然後試試'/ index.html' – 2011-03-29 07:54:28

+0

不可以,這兩者都不能工作 – Emmanuel 2011-03-29 08:04:34

+0

你能直接訪問url嗎?你在js控制檯中遇到錯誤嗎? – 2011-03-29 08:06:16

回答

15

問題解決了!

我只是有這個頭添加到我的index.php文件http://localhost/

header('Access-Control-Allow-Origin: *');

感謝您的幫助反正傢伙!

+0

嗨Emmanual,我和你一樣。但是我沒有任何服務器代碼,我使用了數據庫代理服務器dbmojo [link](code.google.com/p/dbmojo/)。我的腳本位於本地file://目錄中。現在我怎麼能把頭('訪問控制 - 允許 - 原產地:*'); ?還是有其他解決方案嗎? – iEamin 2012-10-14 03:08:02

+0

@iEamin我不太確定你的情況......也許可以通過你的apache(.htaccess)或其他服務器配置文件添加標題「Access-Control-Allow-Origin」?我不確定。我不知道另一種做這種跨服務器/協議請求的方式。 – Emmanuel 2012-10-16 08:28:43

3

這可能不起作用,因爲瀏覽器會認爲這是一個跨域請求。您已通過file:// URL訪問該文件,但正嘗試從http://localhost檢索數據。嘗試從http://localhost以及訪問您的原始文件,它可能會開始工作。

+0

是的,從http:// localhost訪問它很好。但基本上我正在試圖用file:///腳本來做的是通過發送ajax請求並檢查結果來檢測wampserver是否正在運行。 – Emmanuel 2011-03-29 08:05:49

+0

@Emmanuel - 你上面的代碼顯示了你使用的URL,但在這裏你說你正在使用文件路徑。這是什麼? – 2011-03-29 08:08:10

+1

@adam - ajax請求從file:///等運行...並嘗試獲取url http://:localhost /'的內容。無論如何,請參閱下面的我的答案... – Emmanuel 2011-03-29 08:17:36

11

您說該腳本正在從file:/// URL運行。最好不要從file網址做AJAX請求,因爲它們的處理方式不一致。例如,Chrome完全禁止它們。

但是,您在這裏遇到的更大問題是同源策略:您只能向網頁本身發出對同一主機的AJAX請求。 file:///http://localhost都是不是是同一臺主機(即使它們是同一臺機器)。

最好是運行一切關閉http://localhost

+2

不幸的是,我認爲你是對的:(。可能對安全有好處,但在我的情況下很糟糕。 – Emmanuel 2011-03-29 08:06:10