2012-05-21 202 views
7

這裏是PHP documentation有沒有JavaScript方法來做file_get_contents()?

這裏是我將如何在Ajax調用中使用它,如果我沒有找到一個純客戶端的方式來做到這一點。

$homepage = file_get_contents('http://www.example.com/'); 
echo $homepage; 

是否有辦法做到這一點客戶端,所以我沒有Ajax的字符串結束?

+0

什麼是你想「包含」該文件的內容? – MonkeyMonkey

+0

與上面的示例類似,它接受一個URL作爲參數。該URL是用戶定義的。 –

回答

6

你可以做

JS代碼:

$.post('phppage.php', { url: url }, function(data) { 
    document.getElementById('somediv').innerHTML = data;   
}); 

PHP代碼:

$url = $_POST['url']; 
echo file_get_contents($url); 

這將讓你的URL的內容。

+0

@ CS_2013 - 它必須是。改變了答案。 – PitaJ

+0

Ajax的數據在...從您自己的服務器...好主意 –

+0

@ CS_2013 - 謝謝 – PitaJ

3

不是一般意義上的。跨域限制禁止Javascript代碼這樣做。

如果目標站點已設置CORS(跨源資源共享),則可以使用XMLHttpRequest來加載文件。大多數網站沒有,因爲它出於安全原因默認關閉,而且很少有必要。

如果您只需要包含HTML頁面,則可以將其粘貼在元素中。這受到一些佈局陷阱,儘管(頁面以固定大小的元素結束)。

+0

...我可以對iframe做任何分析嗎? –

+0

@ CS_2013不,如果iframe不是來自您的域的文檔。 – Sampson

+0

不是。該框架的內容幾乎完全禁止。 – duskwuff

5

JavaScript不能將數據從頁面中刪除。它可以調用一個本地PHP腳本,然後代表它執行並獲取數據,但JavaScript(在瀏覽器中)無法執行此操作。

$.post("/localScript.php", { srcToGet: 'http://example.com' }, function(data){ 
    /* From within here, data is whatever your local script sent back to us */ 
}); 

你有一個像JSONP和跨域資源共享選項在您的處置,但是這兩個都需要建立另一端,所以你不能只選擇一個域名,並開始發射了對數據的請求。

延伸閱讀:Same origin policy

+0

這是否會改變...... –

0

或者您可以使用php.js庫。其中允許一些PHP函數的JavaScript。 file_get_contents()函數中的一個。

<script> 
var data = file_get_contents('Your URL'); 
</script> 

您可以找到有關php.js更多信息:http://phpjs.org/

+1

這將受制於同樣的原產地政策 –

相關問題