Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.06.2012, 01:07
Аспирант
Отправить личное сообщение для Heidel Посмотреть профиль Найти все сообщения от Heidel
 
Регистрация: 11.06.2012
Сообщений: 71

Ошибка в извлечении XML с помощью Ajax
Делаю пример из книжки
<!-- xmlget.html -->
<html>
	<head>
		<title> Пример извлечения XML с помощью Ajax </title>
	</head>
	
	<body><center />
	<h1>Загрузка XML-содержимого в контейнер DIV</h1>
	<div id="info"> Это предложение будет заменено </div>
	
	<script type="text/javascript">
	
	function ajaxRequest()
	{
		var r;
		try // Для всех браузеров, кроме ие
		{
			r = new XMLHttpRequest();
		}
		catch(e)
		{
			try // ие6+
			{
				r = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e)
			{
				try // ie5
				{
					r = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e) // Браузер не поддерживает Ajax
				{
					r = false;
				}
			}
		}
	return r;
	}	
	
	var nocache = "&nocache=" + Math.random()*1000000;
	url = "rss.news.yahoo.com/rss/topstories";
	var request = ajaxRequest();
	if(request)
	{
		request.open("GET", "xmlget.php?url=" + url + nocache, true)
		out = "";
				
		request.onreadystatechange = function()
		{
			if(this.readyState == 4)
			{
				if(this.status == 200)
				{
					if(this.responseXML != null)
					{
						titles = this.responseXML.getElementByTagName('title')
						for (j = 0; j < titles.length; ++j)
						{
							out += titles[j].childNodes[0].nodeValue + '<br />'
						}
						document.getElementById('info').innerHTML = out;
						
					}
					else alert("Ошибка Ajax: Данные не получены")
				}
			else alert("Ошибка Ajax: " + this.statusText)
			}
		}
		request.send(null)
	}
	else 
	{
		alert("Ошибка: Ваш браузер не поддерживает AJAX")
	}
	</script></body></html>

пхп-файл
<?php//xmlget.php
//error_reporting(E_ALL);
function sanitazeString($var) 
	{
		$var = strip_tags($var);
		$var = htmlentities($var);
		return stripslashes($var);
	}

if(isset($_GET['url']))
	{
		header('Content-Type: text/xml');
		echo file_get_contents("http://".sanitazeString($_GET['url']));
	}
?>

В консоли ошибок js никаких нет, но браузер выдает
Ошибка Ajax: данные не получены
Что тут неправильно?

Последний раз редактировалось Heidel, 11.06.2012 в 01:09.
Ответить с цитированием
  #2 (permalink)  
Старый 11.06.2012, 01:19
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

сорри не весь код посмотрел
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 11.06.2012, 01:19
Аспирант
Отправить личное сообщение для Heidel Посмотреть профиль Найти все сообщения от Heidel
 
Регистрация: 11.06.2012
Сообщений: 71

Сообщение от devote Посмотреть сообщение
в том что вы пытаетесь сделать кросс-доменный запрос, что и является проблемой, которую вы никак не сможете обойти без использования серверной стороны. Браузеры не позволяют делать запросы на чужие сайты, а если и позволят, то чужой сайт должен будет на это дать свое согласие.
А поподробнее, как с этим сладить?
Ответить с цитированием
  #4 (permalink)  
Старый 11.06.2012, 01:20
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Heidel,
Во первых Cкрипт кривой (ни наю как PHP
Во вторых, Вы можете подгружать данные с инохостингов ток в формате json

Воть эта ссылка не пройдёт rss.news.yahoo.com/rss/topstories
Ответить с цитированием
  #5 (permalink)  
Старый 11.06.2012, 01:22
Аспирант
Отправить личное сообщение для Heidel Посмотреть профиль Найти все сообщения от Heidel
 
Регистрация: 11.06.2012
Сообщений: 71

Deff,
Скрипт из книжки. Что с ним не так?
Cсылка http://news.yahoo.com/rss/topstories вообще-то сама по себе рабочая, она в моем коде не пройдет?
Ответить с цитированием
  #6 (permalink)  
Старый 11.06.2012, 01:35
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

<div id="info"></div>
<script type="text/javascript">
function ajax( url, callback ) {
 
    var req = new XMLHttpRequest();
 
    req.open( 'GET', url, true );
    req.onreadystatechange = function() {
 
        if ( req.readyState === 4 ) {
 
            if ( req.status >= 200 && req.status < 300 || req.status === 304 ) {
                callback && callback( req.responseText, this.responseXML );
            } else {
                throw new Error( 'not found' );
            }
        }
    }

    req.send( null );
}
 
var nocache = "&nocache=" + Math.random()*1000000,
    url = "rss.news.yahoo.com/rss/topstories";
 
ajax( "xmlget.php?url=" + url + nocache, function( data, xml ) {
 
    var out = '';
 
    if ( xml != null ) {
 
        var titles = xml.getElementsByTagName('title');
 
        for ( var j = 0; j < titles.length; ++j )  {
            out += titles[j].childNodes[0].nodeValue + '<br />'
        }
        document.getElementById('info').innerHTML = out;
    } else {
        document.getElementById('info').innerHTML = "Что-то не то получили: " + data;
    }
 
});
</script>
и PHP выглядит так:
<?php

    if ( isset( $_GET['url'] ) ) {
        if ( ini_get( 'magic_quotes_gpc' ) == 1 ) {
            $_GET['url'] = stripslashes( $_GET['url'] );
        }
 
        header('Content-Type: text/xml');
        echo file_get_contents( "http://".$_GET['url'] );
    }

?>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 11.06.2012 в 01:45.
Ответить с цитированием
  #7 (permalink)  
Старый 11.06.2012, 01:37
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Heidel
Cсылка http://news.yahoo.com/rss/topstories вообще-то сама по себе рабочая, она в моем коде не пройдет?
Ссылки с чужих доменов грузятся АЯКСОМ только через json
Т.е контент должен представлять из себя скрипт
Ответить с цитированием
  #8 (permalink)  
Старый 11.06.2012, 01:40
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

devote,
Чот у мну и этот не работает

Засунь ссылку с текущей страницы
Ответить с цитированием
  #9 (permalink)  
Старый 11.06.2012, 01:42
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Deff
devote,
Чот у мну и этот не работает

Засунь ссылку с текущей страницы
Дык ты в php положил файл то? оно и не будет работать без PHP яж привел пример кода в PHP файле. К которому обращается скрипт
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #10 (permalink)  
Старый 11.06.2012, 01:44
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

ой простите ошибку сделал в скрипте
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Гаджет для Windows 7 + xml (ajax на локальном копьютере) deeman313 AJAX и COMET 4 05.01.2012 21:32
xml данные c помощью extjs mrshakirov ExtJS 1 11.10.2011 19:06
как поменять цвет элементов div с помощью ajax? uspehovna AJAX и COMET 12 20.08.2010 17:21
Проверка наличия логина в БД при регистрации, с помощью ajax storng Общие вопросы Javascript 4 09.04.2010 20:24
Что выбрать XML или JSON для передачи Ajax - ом из PHP в JS Gozar Общие вопросы Javascript 20 16.08.2009 23:36