Я создал 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>
В принципе, я даю идентификатор пользователя, а затем они помещают этот код в свои файлы. Сайт возвращает номер, и после этого он перенаправляет пользователя или не голосует.
Таким образом, тестирование на локальный этот код выдает эту ошибку:
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 не волшебство. Вы можете использовать JSONP только в том случае, если удаленный URL-адрес поддерживает его. – SLaks
Отредактированный вопрос, так как я выяснил другую проблему, с которой я столкнулся. –
@SLaks Как бы удаленный URL-адрес поддерживал его? РЕДАКТОР: Получил это работу, спасибо в любом случае. –