我爲註冊使用的站點的頂級站點做了「投票」API。XMLHttpRequest跨域拋出錯誤
<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,然後他們把這些代碼放在他們的文件中。 該網站返回一個數字,然後重定向用戶或不進行投票。
因此,在本地主機上的代碼測試引發此錯誤:
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>
然後,它什麼都不做。它不會引發錯誤。 (雖然數據應該等於2(當直接檢查URL時,它返回2))。
而且,如果我嘗試做一點測試,並且做alert(data);
它什麼都不會拋出。
對此我完全無能爲力。任何事情都會有幫助。
JSONP並不神奇。如果遠程URL支持,您只能使用JSONP。 – SLaks 2012-03-19 05:02:43
編輯的問題,因爲我找到了我遇到的其他問題。 – 2012-03-19 05:15:19
@SLaks遠程URL如何支持它?編輯:得到它的工作,無論如何。 – 2012-03-19 05:17:55