我有一个新闻网站,我的一些合作伙伴希望收录最新消息。他们现在用iframe这样做,但他们要求javascript版本,以便他们可以设置div,请帮我如何在javascript中做到这一点?
我当前的脚本就像这样
<iframe height="30%" width="50%" scrolling="no" frameborder="0" src="http://mysite.com/latestnews.php"></iframe>
答案 0 :(得分:2)
当你说“他们要求的JavaScript版本”时,可以解释为只提供数据并将其留给客户添加他们喜欢的任何html标记和样式。如果这就是您所询问的内容,那么您可以在您的站点上设置一个处理JSONP请求的页面。
JSONP基本上返回一个JSON字符串,但包含在一个JavaScript函数调用中,并在请求中指定了一个函数名。因此,假设您向网站添加了一个新网址,例如http://mysite.com/newsfeed.php
。您的用户可以通过JavaScript代码将其命名为:
http://mysite.com/newsfeed.php?callback=someFunction
您的服务器将返回文本:
someFunction('[{"title" : "news item title", "body" : "news item body here"},
{"title" : "2nd item title", "body" : "2nd item body here"}]');
(显然你会使用任何JSON结构对你存储/呈现你的新闻的方式有意义,但关键是请求中指定的函数名称作为响应的一部分被回显。)
PHP输出类似的东西并不是很复杂,就像这样:
<?php header('content-type: application/json; charset=utf-8');
$data = array(array("title" => "news item title", "body" => "news item body here"),
array("title" => "2nd item title", "body" => "2nd item body here"));
echo $_GET['callback'] . '('.json_encode($data).')';
显然,您不会有硬编码的新闻项,您可以根据需要从新闻数据库中填充$data
数组。
然后你要向你的合作伙伴提供两件事:1。JSONP请求的预期格式,它实际上只是如上所示的URL和回调参数名称,以及2. JSON的输出格式 - 某些东西类似于上述内容,但可能与日期,可能是署名,来源,每个新闻项目的字段有关。其余的由他们自己决定:有几个JS库使JSONP调用变得容易,但可能你的合作伙伴可以自己管理这些细节,因为JSONP是相当标准的。