好的,所以基本上我要做的是绕过 javascript 的跨域/同源限制,以便我们可以在客户网站的底部包含一个标语(托管在我们的服务器上并且可以在一个地方进行更新)更新一百万个网站)。我想用 JSONP 在 jq 中做到这一点。这是进入显示标语的页面的代码:
<div id="tagline"></div>
<script type="text/javascript">
$(document).ready(function() {
var url = "http://www.mydomain2.com/api/tagline.php";
$.getJSON(url + "?callback=taglineDisp", null, function(taglineDisp) {
for(i in taglineDisp) {
payload = taglineDisp[i];
$("#tagline").append(payload.text);
}
});
});
</script>
以下是 tagline.php 的内容:
<?php header('Access-Control-Allow-Origin: *'); ?>
<?PHP echo "taglineDisp({\"tagline\" : \"Powered by <strong><a href='http://www.mydomain2.com'>Company Name</a></strong>\"}); ";
最初 tagline.php 不是动态的,我只是在 tagline.json 中有这个:
taglineDisp({"tagline" : "Powered by <strong><a href='http://www.mydomain2.com'>Company Name</a></strong>"});
这是正确的,对吧?JSONP 需要有 taglineDisp(); 包裹在 JSON 对象周围,是吗?
起初我遇到了典型的来源限制错误,但是当我更改为 .php 并添加“Access-Control-Allow-Origin:*”标头指令时,我现在得到:
Given URL is not allowed by the Application configuration.: One or more of the given URLs is not allowed by the App's settings. It must match the Website URL or Canvas URL, or the domain must be a subdomain of one of the App's domains. oauth:1
我希望我的描述和代码示例没问题。我已经阅读了关于 bajillion JSON 文章(在 SO 和其他站点上——IBM 实际上也有一些很棒的 JSON 资源),但我仍然不知道我哪里出错了。我主要是一个 jq 菜鸟。:\
所有这些工作都值得吗?iframe 会不会让我头疼?我认为 jq 可能会更好地实现跨浏览器兼容性,但代价是一些额外的资源开销。:|