这是关于跨域访问资源的answer:
The XHR is constrained by cross-domain rules; to use JSONP you need to add a script element:
function func_callbk()
{
console.log(arguments);
}
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = 'http://abhishekprakash.com/script/example.json?callback=func_callbk';
var h = document.getElementsByTagName('script')[0];
h.parentNode.insertBefore(s, h);
As pointed out by Ian in the comments, the proper response of your server should be something like this:
func_callbk('hello world')
问题:
s.src = 'http://abhishekprakash.com/script/example.json?callback=func_callbk';
是正确的吗?func_callbk('hello world')
的字符串? 答案 0 :(得分:1)
浏览器会允许<script>
代码引用跨域资源(以及其他一些标记,例如<img>
和<iframe>
以及其他一些标记,但不允许使用ajax调用引用没有授予特定权限的跨域服务器。
JSONP使用此<script>
标记的功能来解决跨域问题。它要求目标服务器支持JSONP的处理方式,以便服务器必须合作。从JSONP调用返回的结果实际上必须是一个脚本,它必须在JSONP请求URL中调用reqeusted中的函数名称,并将所需的数据传递给该脚本。
您可能希望阅读描述JSONP如何工作的this article。
并且this MDN same-origin article关于跨域访问的内容和不允许的详细信息。