2010-08-16 2 views
0

Я пробовал классический подход ajax, но это исключает исключение javascript для доступа при попытке добавить скрипт, хранящийся в другом домене. Теперь я уверен, что это возможно, поскольку Google загружает объявления Google через js; так что твиттер, и список может продолжаться.создать виджет для извлечения и отображения данных с помощью ajax

Как я думал об этом до сих пор:

<div id="divId"></div> 
<script type="text/javascript" src="http://mysite.com/script.js"></script> 

Сценарий в script.js должен был изменен атрибут innerHTML в DIV выше. Вместо этого я получаю следующее сообщение об ошибке в firebug: доступ к ограниченному URI-адресу: 1012

Я немного искал, но нашел только обходные решения, которые бесполезны, например, php-прокси и т. Д., Тогда как я хочу, чтобы этот виджет был скопирован, вставляемые в сайты других людей, блоги, форумы и т. д.

Заранее благодарим за любые полезные ответы. :)

ответ

1

Поведение, которое вы видите, предназначено и по соображениям безопасности. Вы не хотите, чтобы сторонний скрипт вносил какие-либо изменения на вашу страницу, так как это может быть сильно использовано.

Вместо этого дайте вашим пользователям фрагмент кода JavaScript, который необходимо добавить на свою страницу.

<script> 
    // do stuff here 
</script> 

Обратите внимание, что в этом фрагменте кода вы можете создать тег сценария динамически, установите атрибут Src и загружать фактическое JavaScript. Этот фрагмент, который ваши пользователи внедряют на свою страницу, имеет доступ ко всей DOM, но скрипт, загруженный извне, этого не делает.

Вот пример профиля виджета Twitter раздающего встраивать на веб-страницах:

<!-- external js, can't access or change the DOM --> 
<script src="http://widgets.twimg.com/j/2/widget.js"></script> 
<!-- local js, does that --> 
<script> 
new TWTR.Widget({ 
    version: 2, 
    .. 
    .. 
}).render().setUser('hulu').start(); 
</script> 

Первый тег скрипт загружает библиотеку, в то время как второй один, который фактически манипулирует страницу добавляется в качестве кода непосредственно ,

+0

Проблема не в том, что я не могу манипулировать объектами DOM на странице. Я могу это сделать. Дело в том, что браузер не позволяет мне отправлять HTTP-запрос ajax на страницы за пределами текущего домена, на главной странице. Вот к чему относится «Доступ к ограниченному URI-адресу: 1012». И мне нужен запрос ajax http для получения данных из базы данных. – devland

0

Наконец-то я нашел решение, которое не включает ajax. я просто использую

<div id="objectId"></div> 
<script type="text/javascript" src="http://mysite.com/getAndDisplayData.php"></script> 
<script type="text/javascript">getAndDisplayData();</script> 

И в getAndDisplayData.php сгенерировать скрипт JS, который будет создавать свой виджет внутри DIV выше. Файл php также подключается к базе данных и извлекает все необходимые данные виджетов. По-видимому, так работают объявления Google, хотя я не уверен. Конечно же, они не используют ajax.

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