Jquery ajax 请求跨域获取json数据,数据可以获得,但json解析的时候报错,请问有啥方法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jquery ajax 请求跨域获取json数据,数据可以获得,但json解析的时候报错,请问有啥方法?相关的知识,希望对你有一定的参考价值。

$.ajax(
url: "http://m.weather.com.cn/data/101020100.html",
type: "post",
dataType:"jsonp",
jsonp:"callback",
success:function(data)
alert("success"+data);
,
error: function(xmlHttpRequest, textStatus, errorThrown)
alert("error"+textStatus + errorThrown);

);
通过firebug可以知道,页面json数据获取了,但解析的时候报错了,请问有什么方法可以获取数据不?或者纯文本也是可以的?
今天很邪门,本来一个get应该就OK的,搞的头大了,万恶的js!

Jquery ajax 想在客户端跨域必须使用jsonp(还可以使用js方式)。你的dataType:"jsonp",没有问题,但看你的url就不像一个jsonp的链接,jsonp的url通常是以?结束的。这里有一篇关于跨域访问的文章,不知对你是否有帮助。http://www.ibm.com/developerworks/cn/web/wa-aj-jsonp1/ 参考技术A 看了一下,好像没有提供jsonp的访问方法,weather.com.cn支持的是用iframe潜入的方法。本回答被提问者和网友采纳 参考技术B 在后台需要
String callback=request.getParameter("callback");//参数以实际定义为准
return callback+"("+ data+")";
参考技术C 你这样能取到数据?callback都没带到url里
"http://m.weather.com.cn/data/101020100.html?callback="再试试追问

请问callback里面是我的回调函数?

还是jsonp对方服务器要支持才可以啊?

追答

callback里面是你的回调函数名,你注意看url,这都是jquery封装好的,你可以看到callback=一串很长的随即字符串,这个就是你传过去的函数,相当于是把你的数据请求封装好成一个函数然后跨域执行这个函数,相当于脚本注入,你可以百度一下"jsonp原理",这个函数的返回值就是你的data
至于支持这个现在来说应该不存在了吧,都是支持的

使用ajax获取本地json跨域问题

导读

学习前端的时候我们有时候需要模拟后端接口来展示数据,但是对于初学者来说,可能不会后端写接口提供给前端,这样我们可以使用json文件来模仿后端传来的数据,这样使用html中访问这个文件里面的数据的时候,我们可以使用jquery来发送请求,获取数据并展示。

首先我们来看一下json数据,请求返回数据dataJson
在这里插入图片描述
数据存储完毕之后,这样我们再看看jq的使用
当我们请求数据的时候,浏览器会立即执行dataJson 这个函数
注意:服务端要在返回的数据外层包裹一个客户端已经定义好的函数

在这里插入图片描述

在这里插入图片描述
即可获得数据

以上是关于Jquery ajax 请求跨域获取json数据,数据可以获得,但json解析的时候报错,请问有啥方法?的主要内容,如果未能解决你的问题,请参考以下文章

使用ajax获取本地json跨域问题

jQuery实现跨域请求

jQuery使用ajax跨域请求获取数据

jquery ajax 怎样跨域获取 json 数据

JQuery - $.ajax() - 使用 JSONP 的跨域 - 仅在 IE 8 中获取“解析器错误”(在 IE 7 中工作)

如何在php中检测ajax跨域请求