Информация за местоположението и уебсайт за времето. Проблеми с Javascript и междусайтов XML

Опитвайки се да направя страница, където да показва текущото време на потребител чрез Javascript. Така че имам код, който може да намери потребителско местоположение и правилно да създаде URL адрес, който ще отговаря идеално на конвенцията за API за времето на Google, но проблемът е, че извършването на xml заявка и представянето на данните за времето обратно на потребителя се оказва проблем. Инсталирах mod_rewrite за apache, за да заобиколя проблема с xml между сайтове, но изглежда, че не работи правилно. Някой друг да има идея как мога да накарам това да работи? Ето кода, който имам досега:

<html>
<head>
    <meta name="robots" value="none" />
    <title></title>
</head>

<body>

<div id="yourinfo">

</div>
<b>url:</b> <span id="url"></span><br />
<b>city:</b> <span id="city"></span><br />

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
    if(google.loader.ClientLocation)
    {
        visitor_lat = google.loader.ClientLocation.latitude;
        visitor_lon = google.loader.ClientLocation.longitude;
        visitor_city = google.loader.ClientLocation.address.city;
        visitor_region = google.loader.ClientLocation.address.region;
        visitor_country = google.loader.ClientLocation.address.country;
        visitor_countrycode = google.loader.ClientLocation.address.country_code;
        weather_http = 'http://www.google.com/ig/api?weather=' + visitor_city + '+' + visitor_region;

        var Result = weather_http;

    }
    else
    {
        document.getElementById('yourinfo').innerHTML = '<p>Whoops!</p>';
    }


    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("GET",'weather_http',false);
    xmlhttp.send();
    xmlDoc=xmlhttp.responseXML;

    document.getElementById("url").innerHTML=weather_http
    document.getElementById("city").innerHTML=xmlDoc.getElementsByTagName("city")[0].childNodes[0].nodeValue;

    </script>


person Joel Smith    schedule 19.03.2012    source източник
comment
Какъв точно е проблемът? Какво не работи?   -  person Pekka    schedule 20.03.2012
comment
Много ми е трудно да кажа, защото съм нов в javascript и нямам лесен начин да го тествам. Изглежда, че URL адресът се връща в променливата weather_http, но когато направя GET заявката и се опитам да я анализирам, нищо не се записва на екрана   -  person Joel Smith    schedule 20.03.2012


Отговори (1)


Уикипедия има чудесен пример за това как да настроите валиден XMLHttpRequest.

По принцип трябва да настроите onreadystatechange слушател за вашата заявка, след това да отворите връзката, като подаде URL (т.е.: weather_http, а не 'weather_http', както е във вашия код) и накрая изпрати всичките си данни.

Тъй като XHR заявките са асинхронни, трябва да приложите това обратно извикване, така че javascript машината да знае какво да прави, когато XHR отговори.

Когато накарате XHR да работи, ще откриете, че не можете да правите това, което се опитвате да правите без прокси. Това се дължи на политиката за кръстосани домейни за XHR. Не можете да получите данни чрез XHR от домейн, различен от текущия домейн на приложението.

За да преодолеете това, ще трябва да внедрите сървър-прокси, за да изпратите XHR на другия домейн, да извлечете отговора и да го върнете обратно на вашето приложение. Има тонове свободно достъпни проксита, просто потърсете ги в Google.

Най-накрая ще имате един последен проблем, който казва на вашия прокси да добави ?weather=city към целевия URL.

Късмет!

person Pedro Baracho    schedule 20.04.2012