我正在请求网络服务使用此代码使用php文件中的国家/地区名称来拉取lat / lng坐标:
$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);
}
})
因此,错误出现在我的主题行中。我有一个类似的场景,使用不同的webservice url(webservicex.net)请求countrynames。当通过ajax发出请求时,来自geonames.com的那个似乎不起作用......怎么来的?
答案 0 :(得分:0)
从您执行AJAX请求的页面中,此URL是否正确?
url:'.. / lib / getdefaultcoord.php'
答案 1 :(得分:0)
你应该得到firebug并从中检查XHR。
我认为或您的网址错误或某些参数未按预期传递
答案 2 :(得分:0)
$(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相同...
答案 3 :(得分:0)
我认为在你的ajax调用中,你应该尝试拼出url的整个路径。而不是使用亲戚 - “../lib/getdefaultcoord.php”尝试使用“http://www.yourdomain.com/lib/getdefaultcoord.php”。 ajax调用可能会被相对引用混淆。