下面是配合AJAX天气预报的webService之ASP的完整攻略:
1. 确认webService接口地址
首先,需要确定使用的天气预报webService接口地址。例如,我们使用的是中国天气网的API。在此基础上,可以根据实际需求自行寻找合适的接口。
2. 创建ASP页面
接着,创建一个名为“weather.asp”的ASP页面,用于提供与天气预报相关的函数。例如,我们可以实现以下两个函数:
2.1 获取当前城市天气
<%
' 获取指定城市ID的天气情况
Function GetCityWeather(cityID)
Dim url, jsonStr, jsonObj
url = "http://www.weather.com.cn/data/sk/" & cityID & ".html"
Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
xmlhttp.open "GET", url, False
xmlhttp.send
jsonStr = xmlhttp.responseText
Set jsonObj = json.parse(jsonStr)
Set GetCityWeather = jsonObj("weatherinfo")
End Function
%>
其中,函数使用了MSXML2.ServerXMLHTTP对象发送HTTP请求,并使用json对象解析返回的JSON格式字符串。通过该函数,可以获取指定城市ID的天气情况。
2.2 获取城市ID
<%
' 获取指定城市名称所对应的城市ID
Function GetCityID(cityName)
Dim url, jsonStr, jsonObj
url = "http://toy1.weather.com.cn/search?cityname=" & Server.UrlEncode(cityName)
Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
xmlhttp.open "GET", url, False
xmlhttp.send
jsonStr = xmlhttp.responseText
Set jsonObj = json.parse(jsonStr)
If jsonObj("i") > 0 Then
Set GetCityID = Split(jsonObj("l")(0), "|")(1)
Else
Set GetCityID = ""
End If
End Function
%>
该函数同样使用了MSXML2.ServerXMLHTTP对象发送HTTP请求,并使用json对象解析返回的JSON格式字符串。通过该函数,可以获取指定城市名称所对应的城市ID。
3. 嵌入javascript代码
在ASP页面中,嵌入javascript代码,实现与前端AJAX交互。例如,我们可以实现以下两个函数:
3.1 显示当前城市天气
function showCityWeather(cityName) {
var cityID = <%=GetCityID(cityName)%>;
if (cityID.length > 0) {
var url = "weather.asp?action=getCityWeather&cityID=" + cityID;
$.getJSON(url, function(data) {
var weatherInfo = data.weatherinfo;
var msg = "当前城市:" + weatherInfo.city + "<br>" +
"天气情况:" + weatherInfo.weather + "<br>" +
"当前温度:" + weatherInfo.temp + "℃<br>" +
"更新时间:" + weatherInfo.time;
$("#weatherContent").html(msg);
}).fail(function(jqXHR, textStatus, errorThrown) {
$("#weatherContent").html(textStatus + ":" + errorThrown);
});
} else {
$("#weatherContent").html("未查询到该城市的信息");
}
}
在该函数中,首先使用GetCityID函数获取指定城市名称的城市ID,然后根据城市ID发起HTTP请求,获取该城市的天气信息,最终在前端显示相应的内容。
3.2 显示当前IP所在城市天气
function showIpWeather() {
var url = "http://ip-api.com/json/?lang=zh-CN";
$.getJSON(url, function(data) {
var cityName = data.city;
showCityWeather(cityName);
}).fail(function(jqXHR, textStatus, errorThrown) {
$("#weatherContent").html(textStatus + ":" + errorThrown);
});
}
在该函数中,首先发起HTTP请求,获取当前IP地址所在的城市名称,然后调用showCityWeather函数,显示该城市的天气信息。
4. 处理HTTP请求
最后,需要在ASP页面中处理前端发送的HTTP请求,并返回相应的结果。例如,可以实现以下代码:
4.1 处理获取当前城市天气请求
<%
' 处理获取当前城市天气请求
If Request.QueryString("action") = "getCityWeather" Then
Dim cityID
cityID = Request.QueryString("cityID")
Dim weatherInfo
weatherInfo = GetCityWeather(cityID)
Response.ContentType = "application/json"
Response.Write json.stringify("{""weatherinfo"":" & json.stringify(weatherInfo) & "}")
Response.End
End If
%>
在该代码中,首先判断前端发送的HTTP请求是否为获取当前城市天气,然后使用GetCityWeather函数获取相应的天气信息,最终将结果序列化为JSON格式字符串返回给前端。
4.2 处理获取IP所在城市天气请求
<%
' 处理获取IP所在城市天气请求
If Request.QueryString("action") = "getIpWeather" Then
Dim url, jsonStr, jsonObj, cityName
url = "http://ip-api.com/json/?lang=zh-CN"
Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
xmlhttp.open "GET", url, False
xmlhttp.send
jsonStr = xmlhttp.responseText
Set jsonObj = json.parse(jsonStr)
cityname = jsonObj("city")
Dim weatherInfo
weatherInfo = GetCityWeather(GetCityID(cityName))
Response.ContentType = "application/json"
Response.Write json.stringify("{""weatherinfo"":" & json.stringify(weatherInfo) & "}")
Response.End
End If
%>
在该代码中,首先判断前端发送的HTTP请求是否为获取IP所在城市天气,然后使用HTTP API获取当前IP所在的城市名称,并使用GetCityID和GetCityWeather函数获取相应的天气信息,最终将结果序列化为JSON格式字符串返回给前端。
这就是配合AJAX天气预报的webService之ASP的完整攻略,其中包括了获取当前城市天气和获取IP所在城市天气的示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:配合AJAX天气预报的webService 之asp - Python技术站