Задать вопрос
@Max100500

Ajax в динамически подключаемом скрипте, как сделать?

Есть файл index.html в котором динамически подключается javascript файл с ajax. То есть:
INDEX.HTML
<!DOCTYPE HTML>
<html>

<head>
  <title>Untitled</title>
  <script>
var js = document.createElement('script');
	js.setAttribute('type', 'text/javascript');
	js.setAttribute('src', 'script1.js');
	js.setAttribute('defer', 'defer');
	document.getElementsByTagName('HEAD')[0].appendChild(js);
  </script>
</head>
<body>
</body>
</html>


SCRIPT1.JS
function getXmlHttp(){
  var xmlhttp;
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}

// javascript-код голосования из примера
function vote() {
	// (1) создать объект для запроса к серверу
	var req = getXmlHttp()

        // (2)
	// span рядом с кнопкой
	// в нем будем отображать ход выполнения
	//var statusElem = document.getElementById('vote_status')

	req.onreadystatechange = function() {
        // onreadystatechange активируется при получении ответа сервера

		if (req.readyState == 4) {
            // если запрос закончил выполняться
            //alert("4444");
			//statusElem.innerHTML = req.statusText
            // показать статус (Not Found, ОК..)

			if(req.status == 200) {
                 // если статус 200 (ОК) - выдать ответ пользователю
				alert("Ответ сервера: "+req.responseText);
			}
			// тут можно добавить else с обработкой ошибок запроса
		}

	}

       // (3) задать адрес подключения
	req.open('GET', 'http://javascript.ru/ajax/intro', true);

	// объект запроса подготовлен: указан адрес и создана функция onreadystatechange
	// для обработки ответа сервера

        // (4)
	req.send(null);  // отослать запрос

        // (5)
	//statusElem.innerHTML = 'Ожидаю ответа сервера...'
}
vote();


Если статически подключить на странице index.html файл script1.js, то все сработает и ответ будет содержать код страницы. Как сделать посоветуйте? Получается, что если файл лежит на том же домене, что и скрипт, то выполняется нормально, а если на другом домене, то не получается прочитать страницу, то есть сделать get запрос.
  • Вопрос задан
  • 2347 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
ruddy22
@ruddy22
Спасение утопающих — дело рук самих утопающих
вместо JSONP, я бы посоветовал использовать CORS, т.к. поддерживается не только получение данных, но и отправка.
может пригодится в будущем
Ответ написан
Комментировать
5angel
@5angel
Фронтенд-лид
Проблема заключается в кросс-доменном запросе. Подробнее о сабже.

В данном случае, т.к. вам нужен именно get, можно решить проблему с помощью jsonp. Опять же, в статье выше приведена ссылка.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы