第一种方法自己代理:
第一步:ajax提交
//成功案例1 在后台访问数据 拼json
$.ajax({
type: "get",
async: false,
timeout: 30000,
url: "callbackparam.aspx",
dataType: "jsonp",
jsonp: "callbackparam",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
jsonpCallback: "success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
success: function (data) { //data为返回json格式
alert(data.weatherinfo.city);
}
});
//第二步:后台处理
if (Request.QueryString["callbackparam"] != null && Request.QueryString["callbackparam"].ToString().Trim() != string.Empty) { string callbackFunName = Request.QueryString["callbackparam"].ToString().Trim();
Uri myUri = new Uri("http://m.weather.com.cn/data/101050101.html"); HttpWebRequest myWebRequest = (HttpWebRequest)WebRequest.Create(myUri); myWebRequest.Method = "GET"; HttpWebResponse myWebResponse = (HttpWebResponse)myWebRequest.GetResponse();
StreamReader reader = new StreamReader(myWebResponse.GetResponseStream(), System.Text.Encoding.GetEncoding("UTF-8")); byte[] buffer = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(reader.ReadToEnd()); string HTML = System.Text.Encoding.GetEncoding("UTF-8").GetString(buffer).Trim();
Response.Write(callbackFunName + "(" + HTML + ")"); Response.End(); }
ok,大功告成。
第二种方法:用代理。
//成功案例2 直接访问数据返回 但需要代理 url1=代理 url2=访问地址
$.getJSON("http://query.yahooapis.com/v1/public/yql?callback=?", { q: "select * from json where url='http://www.weather.com.cn/data/sk/101010100.html'", format: "json" },
function (data) {
alert(data.query.count);
});
第一个url:http://query.yahooapis.com/v1/public/yql?callback=?是代理
第二个Url:'http://www.weather.com.cn/data/sk/101010100.html才是要访问的地址。
浙公网安备 33010602011771号