не удалось открыть поток: HTTP-запрос не выполнен! - PullRequest
0 голосов
/ 11 ноября 2009

Я запрашиваю веб-сервис для получения координат широты / долготы, используя названия стран из php-файла, используя этот код:

$defaultcountry = $_REQUEST['country'];
$daurl = "http://ws.geonames.org/search?q=".$defaultcountry.'&rows=5';
$contents = file_get_contents($daurl);

$xml = new SimpleXMLElement($contents);
$lat = $xml->geoname->lat;
$lng = $xml->geoname->lng;

$coords = array('lat'=>"$lat", 'lng'=>"$lng");

$o = array('success'=>true, 'coords'=>$coords);  


echo json_encode($o);

У меня нет проблем с вызовом этого файла напрямую из браузера. Проблема в том, что этот файл где-то вызывается ajax, например:

ajaxManager.add('cacheQueue',{
                                    url: '../lib/getdefaultcoord.php',
                                    type:'POST',
                                    dataType:'json',
                                    data:{country:Country},
                                    success:function(json){
                                        alert(json.coords.lng);

                                    }

                                    })

Таким образом, ошибка появляется, как указано в моей теме. У меня похожий сценарий для запроса названий стран с использованием другого URL веб-сервиса (webservicex.net). Тот из geonames.com, кажется, не работает, когда запросы сделаны через ajax ... Почему?

Ответы [ 4 ]

0 голосов
/ 22 ноября 2009

Я думаю, что в вашем вызове ajax вы должны попытаться записать весь путь для URL. Вместо использования относительного - "../lib/getdefaultcoord.php" попробуйте использовать "http://www.yourdomain.com/lib/getdefaultcoord.php".. Вызов ajax может быть спутан относительной ссылкой.

0 голосов
/ 11 ноября 2009

вы должны получить firebug и изучить XHR из него.

Я думаю, ваш URL неверен или некоторые параметры не переданы, как ожидалось

0 голосов
/ 11 ноября 2009

я предоставляю то, что вы, ребята, можете играть, если вы не возражаете: запрашивающий файл с ajax:

$(document).ready(function(){ 


        $.post('getdefaultcoord.php', {country:"united arab emirates"}, function(data){
            alert(data.coords.lat);

        },'json');


    });

на getdefaultcoord.php:


$defaultcountry = $_REQUEST['country'];
$url = "http://ws.geonames.org/search?q=".$defaultcountry."&rows=5";
$contents = file_get_contents($url);

$xml = new SimpleXMLElement($contents);
$lat = $xml->geoname->lat;
$lng = $xml->geoname->lng;


$coords = array("lat"=>$lat,"lng"=>$lng);
$o = array('success'=>true, 'coords'=>$coords);

echo json_encode($o);

Вы можете поиграться с файлом getdefaultcoord.php, чтобы убедиться, что запрашивающий файл работает правильно с запросом своей страны и, таким образом, работает с файлом getdefaultcoord.php, обратите внимание, что исходная ошибка, которую я разместил в строке темы, такая же, как у firebug ...

0 голосов
/ 11 ноября 2009

Правильно ли указан этот URL-адрес на странице, по которой вы выполняете запрос AJAX?

url: '../lib/getdefaultcoord.php'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...