如何从远程API(我已构建)获取JSON字符串,以便在javascript可嵌入小部件(我正在尝试编写)中使用它
我想编写一个简单的javascript可嵌入小部件,显示从我的应用程序API检索到的一些信息 我正在构建的API是用Symfony2编写的,我试图简单地获取生成的JSON字符串,并使用javascript将其显示在演示HTML页面中 为了获得JSON字符串,我尝试使用我找到的一些代码 我使用的完整Javascript代码如下所示:如何从远程API(我已构建)获取JSON字符串,以便在javascript可嵌入小部件(我正在尝试编写)中使用它,javascript,php,json,symfony,widget,Javascript,Php,Json,Symfony,Widget,我想编写一个简单的javascript可嵌入小部件,显示从我的应用程序API检索到的一些信息 我正在构建的API是用Symfony2编写的,我试图简单地获取生成的JSON字符串,并使用javascript将其显示在演示HTML页面中 为了获得JSON字符串,我尝试使用我找到的一些代码 我使用的完整Javascript代码如下所示: var request = new XMLHttpRequest(); request.onreadystatechange = function() { i
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (request.readyState === 4) {
if (request.status === 200) {
document.body.className = 'ok';
} else {
document.body.className = 'error';
}
}
};
var url = 'http://127.0.0.1:8000/widget/1';
request.open("GET", url, true);
request.send(null);
document.getElementById('demo').innerHTML = request;
HTML是一个简单的页面,如下所示:
<!DOCTYPE html>
<html lang="it">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="UTF-8" />
<meta name="generator" content="Aerendir's Hands" />
<title>Widget demo page</title>
</head>
<body>
<h1>Pagina demo del widget di TrustBack.Me</h1>
<p id="demo"></p>
<script src="widget.js"></script>
</body>
</html>
小部件演示页面
Pagina demo del widget di TrustBack.我
当我打开时,Chrome控制台告诉我:
无法加载XMLHttpRequest。不
“Access Control Allow Origin”标头出现在请求的服务器上
资源。因此,不允许访问源“”
我知道这是一种防止跨站点脚本编写的安全措施,但Facebook如何使用其小部件处理此类请求呢
幸运的是我正在使用and,所以这个问题马上就解决了!(我认为这是o.o.错误的原因)
如何从应用程序中获取JSON字符串以在javascript代码中使用它?
我非常擅长PHP和Symfony2,但我不懂JavaScript,这是我第一次尝试学习它
所以我希望这里的人能帮助我更好地理解小部件背后的机制
我读过很多关于如何在Stackoverflow和Internet上构建javascript小部件的帖子,但我找不到最新的东西:我找到的所有资源都是旧的(max 2012),我不确定它们是否有用或是否仍然相关
通常我会阅读一些文档来了解应该做什么,然后开始尝试,但在这种情况下,由于我之前不了解最佳实践,也不知道Javascript语言,所以我无法识别好的建议,也无法将当前的好建议与旧的和无用的建议区分开来
我知道Facebook使用iFrame,我的知识和理解到此为止
有人能让我朝着正确的方向去实现我的目标吗
我现在的目标是使用远程API返回的json字符串创建一个javascript变量。
提前谢谢你 允许您需要的域(或使用*允许所有域)正常工作<代码>$response->headers->set('Access-Control-Allow-Origin','*')代码>。非常感谢。另外,如果我认为这不是实现我目标的最佳方式,那么目前我认为这已经足够了:这个解决方案不会让我感到真正的安全。o.o.用一些额外的信息将它写下来作为一个答案,也许是一个替代解决方案,比如向同一个域发出请求,然后从服务器到服务器再到另一个域。