【发布时间】:2019-03-20 05:09:17
【问题描述】:
我有一个 aspx 页面,其中包含一些类似的 javascript 代码
<script>
setTimeout("document.write('" + place.address + "');",1);
</script>
从代码中可以清楚地看出,它会在 1 毫秒的非常短的延迟后在页面上写一些东西。我创建了另一个页面来获取由某个查询字符串执行的页面并获取其输出。问题是
- 我无法避免延迟,因为只需编写 document.write(place.address);不会打印任何内容,因为获取值需要一点时间,所以如果我在 setTimeout 中设置它以延迟输出 1 毫秒,它总是会返回一个值
-
如果我使用
从另一个页面请求输出System.Net.WebClient wc = new System.Net.WebClient(); System.IO.StreamReader sr = new System.IO.StreamReader(wc.OpenRead("http://localhost:4859/Default.aspx?lat=" + lat + "&lng=" + lng)); string strData = sr.ReadToEnd();我得到的是文档的源代码,而不是想要的输出。
我想避免这种延迟,或者延迟客户端请求输出,以便获得所需的值而不是源代码。
default.aspx上的JS是
<script type="text/javascript">
var geocoder;
var address;
function initialize() {
geocoder = new GClientGeocoder();
var qs=new Querystring();
if(qs.get("lat") && qs.get("lng"))
{
geocoder.getLocations(new GLatLng(qs.get("lat"),qs.get("lng")),showAddress);
}
else
{
document.write("Invalid Access Or Not valid lat long is provided.");
}
}
function getAddress(overlay, latlng) {
if (latlng != null) {
address = latlng;
geocoder.getLocations(latlng, showAddress);
}
}
function showAddress(r) {
place = r.Placemark[0];
setTimeout("document.write('" + place.address + "');",1);
//document.write(place.address);
}
</script>
requestClient.aspx 上的代码如下
System.Net.WebClient wc = new System.Net.WebClient();
System.IO.StreamReader sr = new System.IO.StreamReader(wc.OpenRead("http://localhost:4859/Default.aspx?lat=" + lat + "&lng=" + lng));
string strData = sr.ReadToEnd();
【问题讨论】:
-
“我得到的是文档的源代码而不是所需的输出”是什么意思?你看到
setTimeout("document.write...的东西了吗?还是 ASPX 代码(Default.aspx 的标记)?我无法理解后者,并猜测您不是直接从文件系统中获取 URL 而是文件(绕过 IIS)。
标签: c# asp.net javascript html