[英]Cross Domain Ajax Get Request using jsonp- PHP File on External Server for SQL-Queries
[英]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.