2012-03-30 2 views
1

Можно создать дубликат:
JQuery ajax cross domainJquery Ajax перекрестные вызовы домена не в состоянии

Мне нужно загружать содержимое из других веб-сайтов с помощью AJAX. Код ниже работает только LOCALHOST URLs, но не открывает URLs как google.com

$.ajax({ 
    url: urlLeft, 
    crossDomain:true, 
    success: function(data){ 
     var loadedId = createLoadedPage(); 
     data = data.replace(/<script.*?>|<\/script>/mgi,''); 
     data = data.replace(/.*<body.*?>|<\/body>.*/gi,''); 
     $('#'+loadedId).html(data) 
     $('#content_left').html($('#'+loadedId+' #snapwrap_outer').html()); 
     removeLoadedPage(loadedId); 
    }, 
    dataType: 'html' 
}); 
+3

http://ru.wikipedia.org/wiki/Same_origin_policy? – PeeHaa

+0

Я не уверен, но я думаю, что crossDomain работает таким образом, что ваш сервер веб-сайта должен перенаправить на желаемый URL-адрес. –

ответ

3

Благодаря same origin policy restriction Вы не можете отправить Междоменную AJAX запросов. Вот guide, что вы можете взглянуть на некоторые возможные обходные пути, которые вы могли бы использовать.

+0

, но я могу установить jsonp и совершать такие перекрестные вызовы –

+1

@OleksandrKhavdiy, вот в чем смысл JSONP, см. Http://en.wikipedia.org/wiki/JSONP –

+0

Вы должны иметь контроль над удаленным адресом, чтобы использовать JSONP. Удаленный сервер должен отправить JSONP вместо JSON. Если у вас нет контроля над удаленным доменом, вы не можете его использовать. –

0

Это из-за Same Origin Policy, в вашем случае это означает, что вы не можете совершать вызовы ajax за пределами своего домена, потому что браузер не позволит вам. Вы не можете обойти это.

Решение состоит в том, чтобы делегировать ваши удаленные вызовы, например, PHP-скрипту (в том же месте, где должен выполняться вызов ajax), который будет обращаться к данным для вас, и получить доступ к этому сценарию через ajax вызов.

Смежные вопросы