我制作了一个JavaScript插件,我可以在http://my_server/index.html
<div id="foo"></div>
<script type="text/javascript" src="http://my_server/myPlugin.js"></script>
<script type="text/javascript">
myPlugin.init();
</script>
myPlugin.js
对http://my_server/query?foo=bar
进行ajax调用,并在上面的页面中添加更多元素,就像魅力一样。
现在,我想让其他人使用这个插件。想象一下,用户希望在http://her_server/index.html
的网页上实现它,除非现在出现错误
XMLHttpRequest cannot load http://my_server/query?foo=bar.
Origin http://her_server/index.html is not allowed by
Access-Control-Allow-Origin.
额外的皱纹。现在我有一个托管在http://my_server/myPlugin.js
上的插件(是的,我希望这是一个服务器端插件),查询服务器是相同的http://my_server/query?foo=bar
。但是,将来它们可能是不同的服务器。例如,http://my_plugin_server/myPlugin.js
处的插件和http://my_query_server/query?foo=bar
处的查询服务器。
最后,所有这些都是在没有jQuery或任何其他库的帮助下完成的。我的ajax代码是
"getData": function (q) {
var uri = "http://my_server/query?foo=" + q;
var req = new XMLHttpRequest();
req.onreadystatechange = handler;
req.open("GET", uri, true);
req.send();
function handler(evt) {
if (req.readyState == 4 && req.status == 200) {
var json = eval('('+ req.responseText +')');
.. do something with json ..
}
}
}