Jquery 取得天气信息

ybhcolin 2013-06-08 10:34:45
http://www.weather.com.cn/data/sk/101281601.html 返回Json数据格式.

想通过Jquery 的$.ajax或 $.getJson 调用其Url. 想得到返回的Json格式数据. 但一直调试都不成功. 特来请高手帮忙.


$.ajax({
type:"GET",
url:"http://www.weather.com.cn/data/sk/101281601.html",
dataType:"jsonp",
jsonp:'callback',
success : function(json){
//$('#msg_box').html(json.msg);
alert('OK');
return true;
},
error:function(){
alert('fail');
}
});



$.getJSON("http://www.weather.com.cn/data/sk/101281601.html?callback=?",{},function(response){alert('OK')});


以上两种方式调试都不成功.谢谢
...全文
459 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
g8up 2015-07-04
  • 打赏
  • 举报
回复
JSONP 需要后端读取一个参数(比如 callback=XXX)作为回调的入口。
  • 打赏
  • 举报
回复
你请求的是一个静态的页面,是不会有回调的。
夜色镇歌 2013-06-09
  • 打赏
  • 举报
回复
引用 22 楼 Mockqi 的回复:
[quote=引用 21 楼 Joyhen 的回复:] [quote=引用 20 楼 Mockqi 的回复:] [quote=引用 19 楼 Joyhen 的回复:] alert不支持ie8,谷歌下面可以啊,火狐浏览器我没有装
alert不支持ie8 [/quote]你可以测试下咯,是弹不出来的[/quote] 因为IE8不弹出alert 所以IE8不支持alert [/quote]
夜色镇歌 2013-06-08
  • 打赏
  • 举报
回复
我试了。。F12 network确实发出请求了 也有返回值 可是success的 data却alert不出来··
ybhcolin 2013-06-08
  • 打赏
  • 举报
回复
引用 8 楼 liuchaolin 的回复:
[quote=引用 7 楼 ybhcolin 的回复:] [quote=引用 5 楼 liuchaolin 的回复:] 要用中折的办法 public void ProcessRequest (HttpContext context) { context.Response.Write(GetResStr()); } string GetResStr() { WebClient _webclient = new WebClient(); _webclient.BaseAddress = "http://m.weather.com.cn/data/"; _webclient.Headers.Add("Accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"); _webclient.Headers.Add("Accept-Language", "zh-cn"); _webclient.Headers.Add("UA-CPU", "x86"); _webclient.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"); string retValue = Encoding.UTF8.GetString(_webclient.DownloadData("101300301.html")); return retValue; }
相当于还是要写个后台方法.其实我的目地是,网页代码直接请求URL返回结果.[/quote] ajax是无法跨域的[/quote] $.getJson 这个方法是可以跨域的,但是为什么也用不了呢
md5e 2013-06-08
  • 打赏
  • 举报
回复
引用 7 楼 ybhcolin 的回复:
[quote=引用 5 楼 liuchaolin 的回复:] 要用中折的办法 public void ProcessRequest (HttpContext context) { context.Response.Write(GetResStr()); } string GetResStr() { WebClient _webclient = new WebClient(); _webclient.BaseAddress = "http://m.weather.com.cn/data/"; _webclient.Headers.Add("Accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"); _webclient.Headers.Add("Accept-Language", "zh-cn"); _webclient.Headers.Add("UA-CPU", "x86"); _webclient.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"); string retValue = Encoding.UTF8.GetString(_webclient.DownloadData("101300301.html")); return retValue; }
相当于还是要写个后台方法.其实我的目地是,网页代码直接请求URL返回结果.[/quote] ajax是无法跨域的
ybhcolin 2013-06-08
  • 打赏
  • 举报
回复
引用 5 楼 liuchaolin 的回复:
要用中折的办法 public void ProcessRequest (HttpContext context) { context.Response.Write(GetResStr()); } string GetResStr() { WebClient _webclient = new WebClient(); _webclient.BaseAddress = "http://m.weather.com.cn/data/"; _webclient.Headers.Add("Accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"); _webclient.Headers.Add("Accept-Language", "zh-cn"); _webclient.Headers.Add("UA-CPU", "x86"); _webclient.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"); string retValue = Encoding.UTF8.GetString(_webclient.DownloadData("101300301.html")); return retValue; }
相当于还是要写个后台方法.其实我的目地是,网页代码直接请求URL返回结果.
ybhcolin 2013-06-08
  • 打赏
  • 举报
回复
引用 3 楼 nice_fish 的回复:
http://www.open-open.com/lib/view/open1334026513327.html
这文章我看过,但就是在本机没有反应.
md5e 2013-06-08
  • 打赏
  • 举报
回复
要用中折的办法

public void ProcessRequest (HttpContext context) {
context.Response.Write(GetResStr());
}

string GetResStr()
{

WebClient _webclient = new WebClient();
_webclient.BaseAddress = "http://m.weather.com.cn/data/";
_webclient.Headers.Add("Accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*");
_webclient.Headers.Add("Accept-Language", "zh-cn");
_webclient.Headers.Add("UA-CPU", "x86");
_webclient.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");

string retValue = Encoding.UTF8.GetString(_webclient.DownloadData("101300301.html"));
return retValue;
}
ybhcolin 2013-06-08
  • 打赏
  • 举报
回复
引用 2 楼 Joyhen 的回复:
很奇怪,为什么要加 dataType:"jsonp", jsonp:'callback', 个人觉得没必要,还不如直接$.getJSON(...方法
网上的代码是这样写的. 但直接 用$.getJson方法,也没有任何反应
  • 打赏
  • 举报
回复
http://www.open-open.com/lib/view/open1334026513327.html
joyhen 2013-06-08
  • 打赏
  • 举报
回复
很奇怪,为什么要加 dataType:"jsonp", jsonp:'callback', 个人觉得没必要,还不如直接$.getJSON(...方法
  • 打赏
  • 举报
回复
我也很好奇。
  • 打赏
  • 举报
回复
引用 21 楼 Joyhen 的回复:
[quote=引用 20 楼 Mockqi 的回复:] [quote=引用 19 楼 Joyhen 的回复:] alert不支持ie8,谷歌下面可以啊,火狐浏览器我没有装
alert不支持ie8 [/quote]你可以测试下咯,是弹不出来的[/quote] 因为IE8不弹出alert 所以IE8不支持alert
joyhen 2013-06-08
  • 打赏
  • 举报
回复
引用 20 楼 Mockqi 的回复:
[quote=引用 19 楼 Joyhen 的回复:] alert不支持ie8,谷歌下面可以啊,火狐浏览器我没有装
alert不支持ie8 [/quote]你可以测试下咯,是弹不出来的
  • 打赏
  • 举报
回复
引用 19 楼 Joyhen 的回复:
alert不支持ie8,谷歌下面可以啊,火狐浏览器我没有装
alert不支持ie8
joyhen 2013-06-08
  • 打赏
  • 举报
回复
alert不支持ie8,谷歌下面可以啊,火狐浏览器我没有装
夜色镇歌 2013-06-08
  • 打赏
  • 举报
回复
引用 17 楼 Joyhen 的回复:
[quote=引用 16 楼 ybhcolin 的回复:] [quote=引用 14 楼 Joyhen 的回复:]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>测试获取天气信息</title>
</head>
<body>
    <input type="button" value="json测试" id="btnDoJson" />

    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>    
    <script type="text/javascript">
        $(function () {
            $("#btnDoJson").click(function () {
                $.ajax({
                    type: "get",
                    url: "http://www.weather.com.cn/data/sk/101281601.html?pDate=" + (new Date().getTime()),
                    success: function (msg) {
                        alert(msg);
                    },
                    error: function () {
                        alert("数据获取失败!");
                    }
                });
            })
        });
    </script>
</body>
</html>
谢谢兄弟,用你这段代码可以. 差异在于我用的Jquery版本是 1.6.2 而你这个Demo的版本为1.4.1. 另外,在用IE进行浏览时会有一个跨域提示的问题, 只能修改IE选项才会消除提示. 如果用户也要去修改IE选项的话,那就太麻烦了. 可能会采用在服务器写一个ashx文件.然后用Jquery调用. 这样应该可以. 再次谢谢[/quote] 告诉你一个方法可以避免用异步操作存在的问题。 用 WebRequest.Create方法获取http://www.weather.com.cn/data/sk/101281601.html这个页面的数据(当然,我建议后面添加时间戳,eg:
String requestURL="http://www.weather.com.cn/data/sk/101281601.html?pdate="+Guid.NewGuid().ToString()
,防止页级缓存),很显然那个页面的源代码就是json字符串。然后把或的页面字符赋值给public类型的变量,前台通过js获取这个public类型的值,然后json解析就ok了,也可以直接后台解析。 获取页面数据方法太多,参考:http://blog.csdn.net/joyhen/article/details/8814001[/quote]为什么火狐谷歌下面alert不出来???
joyhen 2013-06-08
  • 打赏
  • 举报
回复
引用 16 楼 ybhcolin 的回复:
[quote=引用 14 楼 Joyhen 的回复:]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>测试获取天气信息</title>
</head>
<body>
    <input type="button" value="json测试" id="btnDoJson" />

    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>    
    <script type="text/javascript">
        $(function () {
            $("#btnDoJson").click(function () {
                $.ajax({
                    type: "get",
                    url: "http://www.weather.com.cn/data/sk/101281601.html?pDate=" + (new Date().getTime()),
                    success: function (msg) {
                        alert(msg);
                    },
                    error: function () {
                        alert("数据获取失败!");
                    }
                });
            })
        });
    </script>
</body>
</html>
谢谢兄弟,用你这段代码可以. 差异在于我用的Jquery版本是 1.6.2 而你这个Demo的版本为1.4.1. 另外,在用IE进行浏览时会有一个跨域提示的问题, 只能修改IE选项才会消除提示. 如果用户也要去修改IE选项的话,那就太麻烦了. 可能会采用在服务器写一个ashx文件.然后用Jquery调用. 这样应该可以. 再次谢谢[/quote] 告诉你一个方法可以避免用异步操作存在的问题。 用 WebRequest.Create方法获取http://www.weather.com.cn/data/sk/101281601.html这个页面的数据(当然,我建议后面添加时间戳,eg:
String requestURL="http://www.weather.com.cn/data/sk/101281601.html?pdate="+Guid.NewGuid().ToString()
,防止页级缓存),很显然那个页面的源代码就是json字符串。然后把或的页面字符赋值给public类型的变量,前台通过js获取这个public类型的值,然后json解析就ok了,也可以直接后台解析。 获取页面数据方法太多,参考:http://blog.csdn.net/joyhen/article/details/8814001
ybhcolin 2013-06-08
  • 打赏
  • 举报
回复
引用 14 楼 Joyhen 的回复:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>测试获取天气信息</title>
</head>
<body>
    <input type="button" value="json测试" id="btnDoJson" />

    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>    
    <script type="text/javascript">
        $(function () {
            $("#btnDoJson").click(function () {
                $.ajax({
                    type: "get",
                    url: "http://www.weather.com.cn/data/sk/101281601.html?pDate=" + (new Date().getTime()),
                    success: function (msg) {
                        alert(msg);
                    },
                    error: function () {
                        alert("数据获取失败!");
                    }
                });
            })
        });
    </script>
</body>
</html>
谢谢兄弟,用你这段代码可以. 差异在于我用的Jquery版本是 1.6.2 而你这个Demo的版本为1.4.1. 另外,在用IE进行浏览时会有一个跨域提示的问题, 只能修改IE选项才会消除提示. 如果用户也要去修改IE选项的话,那就太麻烦了. 可能会采用在服务器写一个ashx文件.然后用Jquery调用. 这样应该可以. 再次谢谢
加载更多回复(4)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧