【发布时间】:2012-04-03 15:30:25
【问题描述】:
我为顶级站点创建了一个“投票”API,供注册使用的站点使用。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
var id = 1;
$(document).ready(function(){
$.getJSON("http://mysite.com/index.php?page=vote", { id: id, hasVoted: 'unknown' }, function(data) {
if(data == 2) {
window.location.replace("http://mysite.com/index.php?page=vote&id=" + id);
}
});
});
</script>
基本上,我给用户他们的 ID,然后他们将该代码放入他们的文件中。 该网站返回一个数字,然后将用户重定向或不进行投票。
因此,在 localhost 上测试该代码会引发此错误:
XMLHttpRequest cannot load http://mysite.com/index.php?page=vote&id=1&hasVoted=unknown. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
如果我使用此代码:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
var id = 1;
$(document).ready(function(){
$.getJSON("http://mysite.com/index.php?page=vote&callback=?", { id: id, hasVoted: 'unknown' }, function(data) {
if(data == 2) {
window.location.replace("http://mysite.com/index.php?page=vote&id=" + id);
}
});
});
</script>
然后它什么也不做。它不会引发错误。 (虽然 data 应该等于 2 (直接检查该 URL 时,它返回 2 )。
而且,如果我尝试做一个小测试,然后做 alert(data); 它仍然不会抛出任何东西。
我对此一无所知。任何事情都会有所帮助。
【问题讨论】:
-
JSONP 并不神奇。如果远程 URL 支持,您只能使用 JSONP。
-
已编辑问题,因为我发现了我遇到的其他问题。
-
@SLaks 远程 URL 如何支持它?编辑:得到它的工作,还是谢谢。
标签: javascript jquery ajax xmlhttprequest