有没有JavaScript方法来做file_get_contents()?

CS_*_*013 12 javascript php

这是PHP文档

如果我没有找到纯客户端方式来执行此操作,我将在Ajax调用中使用它.

$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
Run Code Online (Sandbox Code Playgroud)

有没有办法做这个客户端,所以我没有ajax字符串结束?

Sam*_*son 7

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 */
});
Run Code Online (Sandbox Code Playgroud)

您可以使用JSONP和跨源资源共享等选项,但这两个选项都需要设置另一端,因此您不能只选择一个域并开始触发数据请求.

进一步阅读:同源政策


Pit*_*taJ 7

你能做到的

JS代码:

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

PHP代码:

$url = $_POST['url'];
echo file_get_contents($url);
Run Code Online (Sandbox Code Playgroud)

那会得到你的网址内容.


Ste*_*age 6

这个函数将文件作为字符串返回,就像 PHP 一样file_get_contents()

function file_get_contents(uri, callback) {
    fetch(uri).then(res => res.text()).then(text => callback(text));
}
Run Code Online (Sandbox Code Playgroud)

但是与 PHP 不同的是,JavaScript 会继续执行下一条语句,而不是等待数据返回。

  • 根据您链接的域/URL 与您的用户名相同或包含您的用户名,您似乎已链接到您自己的站点/您所属的站点。如果您这样做,您*必须披露这是您的网站*。如果您不公开隶属关系,则将其视为垃圾邮件。请参阅:[**什么表示“良好”的自我宣传?**](//meta.stackexchange.com/q/182212) 和[自我宣传的帮助中心](//stackoverflow.com/help/promotion) . 披露必须是明确的,但不需要是正式的。如果是您自己的*个人*内容,则可以是“在我的网站上……”、“在我的博客上……”等。 (2认同)

K-G*_*Gun 5

现在是 2020 年和一些现代方法;

async function file_get_contents(uri, callback) {
    let res = await fetch(uri),
        ret = await res.text(); 
    return callback ? callback(ret) : ret; // a Promise() actually.
}

file_get_contents("https://httpbin.org/get", console.log);
// or
file_get_contents("https://httpbin.org/get").then(ret => console.log(ret));
Run Code Online (Sandbox Code Playgroud)