Как получить ответ на междоменный запрос в javascript
Я делаю междоменный запрос в javascript, динамически добавляя скрипт и устанавливая его атрибут src в домен, к которому мне нужно сделать запрос. Для справки: http://alvinabad.wordpress.com/2009/02/13/feb13/
Код скрипта:
var script_id = null;
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', crossDomainURL);
script.setAttribute('id', 'script_id');
script_id = document.getElementById('script_id');
if (script_id) {
document.getElementsByTagName('head')[0].removeChild(script_id);
}
Теперь мне нужно разобрать ответ на этот запрос. Я проверил сырой ответ от скрипача. Данные есть, но их нет в домене. Это начинается так:
<script type="text/javascript">
/* <![CDATA[ */
if (top == self || parent != top || document.location.hostname != document.domain)
{
top.location.replace("http:\/\/www.facebook.com\/?gringotts_redir");}
/* ]]> */
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"**... then the rest
Источник страницы показывает встроенный мной javascript, как мне разобрать данные, сгенерированные из этого кода.
2 ответа
Обычно это делается так, чтобы ответ скрипта состоял из вызова функции, уже присутствующей на странице. Однако из соображений безопасности браузер не позволит вашему коду "увидеть" содержимое импортированного скрипта. Тем не менее, браузер будет запускать скрипт, если он является допустимым кодом JavaScript. В вашем случае ответ не является допустимым кодом JavaScript. Там не может быть <script>
тег или любая разметка HTML - это должен быть чистый код JavaScript, как и содержимое любого другого файла, импортированного с <script>
тег.
То, что вы просите, известно как JSONP или "JSON with padding".
см. http://en.wikipedia.org/wiki/JSONP для получения дополнительной информации.