繁体   English   中英

使用JSONP和PHP调用外部html文件

[英]Calling an external html file using JSONP and PHP

这个问题可能对这里的许多人来说有点模糊,但是我对该主题的了解也很模糊,尽管进行了一些搜索,但是我仍然无法在网上找到任何有关如何执行此操作的明确说明(在我看来),它应该是更简单的跨域JSONP操作之一。

我将解释我要做什么。 我正在尝试使用JSONP和PHP脚本检索外部服务器上HTML文件的内容。 我可以访问服务器-我的PHP脚本如下:

    <?php
    $callback = '';
    if (isset($_GET['callback']))
    {
    $callback = filter_var($_GET['callback'], FILTER_SANITIZE_STRING);
    }
    $html = include($callback);
    echo $callback . '('.json_encode($html).');';
    ?>

使用此方法,当我键入www.myurl.com/myscript.php?callback=filename.html ,似乎显示了正确的文件(尽管由于某种原因,地址中的?callback是重复的,并附加了文件名)到显示的输出末尾...

我为我的HTML文件尝试了几种不同的脚本,但目前具有以下功能...

    function request_jsonp(){
    var script = document.createElement('script');
    var url = 'http://www.myurl.com/myscript.php?callback=filename.html';
    script.setAttribute('src', url);
    document.getElementsByTagName('head')[0].appendChild(script);
    }

现在显然这是行不通的,因为PHP脚本的输出不是任何形式的工作函数,但是我不确定使它成为最佳方法的最佳方法。 我想以某种方式包装输出:

    function DisplayOutput() {
        document.getElementById('output').innerHTML = ...external HTML goes here!... ;
    }

...但是目前我真的不确定执行此操作的最佳方法。

任何帮助将不胜感激。

callback必须是回调函数的名称。 每次调用该函数时,您都应该生成一个唯一的。

您应该使用另一个不同的查询字符串变量来确定要获取的URI。

var jsonp_counter = 0;

function request_jsonp(url, callback){
    jsonp_counter++;
    var callback_name = "jsonp_function_" + jsonp_counter;
    window[callback_name] = callback;

    var jsonp_url = 'http://www.myurl.com/myscript.php" +
              "?callback=" + encodeURIComponent(callback_name) +
              "&url=" + encodeURIComponent(url);

    var script = document.createElement('script');
    script.setAttribute('src', url);
    document.getElementsByTagName('head')[0].appendChild(script);
}

request_jsonp("filename.html", function (data) {
     do_something_with(data);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM