【发布时间】:2013-01-02 10:01:50
【问题描述】:
如果我手动键入点名称而不是变量res [点名称],则在 46 字符串中它可以工作。但如果没有,那就行不通了。
它的作用是:
- 点击该点
- 取点的名称
- 在维基百科中搜索
- 解析xml
- 从 xml 获取 URL
- 在 iframe 中打开 URL
我哪里做错了?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>
<script type="text/javascript">
var map = null;
function GetMap() {
// Initialize the map
map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), {
credentials: "An-KyHsPpYClz9oHXMZ6X3SW6I44Ei2DTTrUS_QlXUW43qqsvOAQrT9ekVEIBT9u"
});
Microsoft.Maps.Events.addHandler(map, 'click', LatLong);
}
function LatLong(e) {
if (e.targetType == "map") {
var point = new Microsoft.Maps.Point(e.getX(), e.getY());
var loc = e.target.tryPixelToLocation(point);
lola = "lo,loe".replace('lo', loc.latitude).replace('loe', loc.longitude);
}
MakeGeocodeRequest('An-KyHsPpYClz9oHXMZ6X3SW6I44Ei2DTTrUS_QlXUW43qqsvOAQrT9ekVEIBT9u');
}
function ClickGeocode(credentials) {
map.getCredentials(MakeGeocodeRequest);
}
function MakeGeocodeRequest(credentials) {
var geocodeRequest = "http://dev.virtualearth.net/REST/v1/Locations/" + lola + "/?output=json&jsonp=GeocodeCallback&key=" + credentials;
CallRestService(geocodeRequest);
}
function GeocodeCallback(result) {
res = (result.resourceSets[0].resources[0].name);
console.log(res);
$(document).ready(function () {
$.ajax({
type: "GET",
url: "http://en.wikipedia.org/w/api.php?action=opensearch&limit=1&format=xml&search="+res,
dataType: "xml",
success: xmlParser
});
});
}
function xmlParser(xml) {
var str = jQuery(xml).find("Url").text()
alert(str);
document.getElementById("iframe").src=str.replace('en.', 'm.');
}
function CallRestService(request) {
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", request);
document.body.appendChild(script);
}
</script>
</head>
<body onload="GetMap();">
<iframe align="right" height="500px" id="iframe" src="" width="48%"></iframe>
<div id='mapDiv' style="position:relative; width:48%; height:500px;"></div>
</body>
</html>
【问题讨论】:
-
愿意分享
console.log(res)打印的内容以及“不起作用”的实际含义吗? -
console.log(res)打印点的名称,以了解我在 wiki 中寻找的内容。不起作用意味着我得到了空的alert而不是城镇/地点等的网址。 -
我怀疑“点的名称”包含在 URL 中具有特殊含义的字符。当然,我们仍然不知道
console.log(res)打印了什么,因为我们对其输出只有一个模糊的描述。我注意到您提到了一条错误消息,但从未与我们分享。这个问题无法回答,因为它忽略了重要信息。 -
例如,res 等于
Wróblew, Woj. Lodzkie,波兰。然后 urlhttp://en.wikipedia.org/w/api.php?action=opensearch&limit=1&format=xml&search=Wróblew, Woj. Lodzkie.Empty 空格将转换为特殊符号和 xml 就可以了,但是如果我使用变量 - res,它就不会了。 -
Console.log(res)写入控制台Wróblew, Woj. Lodzkie(点名称)