почему не работает ajax между двумя разными серверами? - PullRequest
1 голос
/ 07 мая 2011

возможно, я делаю что-то не так, но попробуйте этот пример на вашем сервере / локально, если у меня есть локальный файл ajax.php и я выполняю запрос local, он работает, но как только ajax.php удален, он не работает.

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p></p>



<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
<script type="text/javascript">

$(document).ready(function() 
{

    window.setInterval(function() 
    {
        $.ajax({
            url: 'ajax.php',
            type: 'GET',
            dataType: 'json',
            cache: false,
            success: function(result) 
            {
                $('p').html(result.price);
            }
        });
    }, 2000);


});

</script>
</body>
</html>

Ответы [ 3 ]

4 голосов
/ 07 мая 2011

JavaScript может загружать данные только с одного хоста, это называется SameOrginPolicy .Короче говоря, это примерно означает, что код JavaScript, встроенный в HTML-файл в ServerA, может запрашивать документы только из ServerA через AJAX.Это сделано из соображений безопасности.

Если вам действительно нужно загрузить данные с внешнего сервера, вы можете попробовать использовать JSONP .Примеры можно найти через Google, например здесь .

2 голосов
/ 07 мая 2011

Javascript не разрешает междоменные запросы. Недавно я задал очень похожий вопрос, на который могут быть полезны ответы: 3 способа сделать междоменный запрос в Javascript

Вот еще несколько:

  • Используйте ajax XMLHttpRequest для вызова серверного скрипта, который выбирает желаемый запрос. то есть PHP и cURL
  • JSON получить запрос
  • JQuery AJAX запрос http://api.jquery.com/jQuery.ajax/
  • cURL, File получает содержимое и AJAX (повторить HTML или JSON)
  • Кросс-домен с использованием flash
  • Вы можете использовать Access-Control-Allow-Origin: * в заголовки, поступающие с сервера на другой домен. Единственная проблема с этим заключается в том, что браузер современный, однако. Не будет работать на IE старше 8. См. https://developer.mozilla.org/En/HTTP_access_control
0 голосов
/ 07 мая 2011

Это из-за той же политики происхождения Javascript.Javascript был построен с этой политикой из соображений безопасности.

http://en.wikipedia.org/wiki/Same_origin_policy

Однако вы можете делать междоменные запросы с JSONP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...