16

这是PHP文档

如果我找不到纯粹的客户端方式来执行此操作,我将在 Ajax 调用中使用它。

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

有没有办法代替这个客户端,这样我就不必将字符串 ajax 了?

4

8 回答 8

9

你可以做

JS代码:

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

PHP代码:

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

这将为您提供 url 的内容。

于 2012-05-21T22:38:34.007 回答
8

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 和跨域资源共享等选项,但是这两个选项都需要设置另一端,因此您不能只选择一个域并开始发出数据请求。

延伸阅读:同源政策

于 2012-05-21T22:37:23.913 回答
6

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

function file_get_contents(uri, callback) {
    fetch(uri).then(res => res.text()).then(text => callback(text));
}

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

于 2019-04-17T21:31:10.873 回答
6

现在是 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));
于 2020-05-14T00:49:24.413 回答
3

不是一般意义上的。跨域限制不允许 Javascript 代码执行此操作。

如果目标站点设置了CORS(跨域资源共享),则可以使用 XMLHttpRequest 加载文件。大多数网站都没有,因为出于安全原因默认情况下它是关闭的,并且很少需要。

如果您只需要包含一个 HTML 页面,您可以将其粘贴在一个<iframe>元素中。不过,这会受到一些布局问题的影响(页面以固定大小的元素结束)。

于 2012-05-21T22:37:17.113 回答
2

Or You can use php.js library. Which allow some php functions for javascript. file_get_contents() function one of them.

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

You can find more info about php.js : http://phpjs.org/

于 2012-05-21T23:07:23.483 回答
0

我认为这可能对您有用:

具有 node.js 的“file-get-contents”方法的 npm 包 https://www.npmjs.com/package/file-get-contents

它是异步的,所以如果你使用 express,它应该像这样使用

app.get('/',  async (req, res)=>{
    //paste here the code below
}

例子

const fileGetContents = require('file-get-contents');
 
// A File request
 
try {
    let data = await fileGetContents('/tmp/foo/bar');
 
    console.log(data);
} catch (err) {
    console.log('Unable to load data from /tmp/foo/bar');
}
 
// Or a HTTP(S) request
 
fileGetContents('https://pokeapi.co/api/v2/pokemon/1/').then(json => {
    const pokemon = JSON.parse(json);
 
    console.log(`Name of first pokemon is ${pokemon.name}`);
}).catch(err => {
    console.err(`Unable to get content from PokeAPI. Reason: ${err.message}`);
});
于 2021-10-14T05:56:49.680 回答
-1
  <div id="svg">

  </div>
  <script>

    function file_get_contents(uri, callback) {
         fetch(uri).then(res => res.text()).then(text => 
        {

            var xmlSvg =text;
            console.log(xmlSvg );
            document.getElementById('svg').innerHTML = xmlSvg;
        })
    }

    
    var uri ='You-urlllllllll-svg';

    file_get_contents(uri);

</script>
于 2021-05-06T22:11:20.047 回答