С помощью JavaScript Ajax опрашивает виджет - PullRequest
0 голосов
/ 20 ноября 2010

У меня следующая проблема. Мне нужно создать виджет JS и установить его на один блог, например, любой блог на blogger.com. Вы можете выбрать там ящик для javascript, и я опубликую JS в этом окне.

Проблема, которую я имею и не знаю, как это сделать, заключается в том, что скрипт должен выполнить опрос ajax для exmaple в течение 60 секунд. Но как выполнить ajax-вызов, когда хост не совпадает с хостом, в который входит JS?

Например, самый простой способ объяснить это: есть окно поиска, и когда enayone ищет anythign, JS-скрипт должен передавать результаты в течение 60 секунд с сервера, что я установил в этом скрипте, и отличается от хост, в который входит JS, без проблем с ограничением JS для хостов.

Или, например, чат-клиент, где клиент размещен на одном другом хосте, а сервер на другом.

Может кто-нибудь подсказать мне идею или прислать мне пример, как это сделать?

Спасибо Nik


Ну, с этим примером это возможно, но без JSONP?

function asyncreq(url) {
 var xmlhttp = false;
   try {
     xmlhttp = new XMLHttpRequest();
   } catch (trymicrosoft) {
     try {
       xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (othermicrosoft) {
       try {
         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
       } catch (failed) {
         xmlhttp = false;
       }  
     }
   }
 if (xmlhttp){
         try {
             xmlhttp.open("GET", url);
             xmlhttp.onreadystatechange=function() {
                document.getElementById('mydiv').innerHTML = xmlhttp.responseText;
             }

             xmlhttp.send(null);
         }
         catch (failed) {
     xmlhttp = false;
   }
 }
}

Если вы отправляете ответ кусками, то все в порядке. Но здесь снова вызов в ajax. И когда я использую его на другом хосте, я не могу вызвать URL из-за политики того же происхождения.

Есть ли другой способ?

Я нашел очень интересный пример здесь .

Посмотрите внизу, там есть окно поиска работы. Если вы исследуете небольшой бит, то увидите, что используется класс RSL (), который выполняет запрос. Как этот класс делает запрос без ajax? Я не могу понять вау этот класс работает. Кто-нибудь может показать мне лучший пример?

1 Ответ

0 голосов
/ 20 ноября 2010

Есть два основных варианта:

  1. Поместите iframe туда, куда вы хотите переместить виджет. URL-адрес src будет находиться на том же сервере, на который будет поступать вызов AJAX.

  2. Используйте JSONP, который состоит из вставки тега сценария на страницу, чтобы обойти политику того же источника. Для этого сервер AJAX должен обернуть свой вывод JSON в ?(...), где URL включает callback=?. Затем, как только ответ получен, запустите другой запрос.

...