1
binarymann OP |
2
feiyuanqiu 2015-05-06 14:30:28 +08:00 1
这个地址返回的是 json 格式的数据,你代码里面指定的处理方式是 jsonp,所以就报错了
$.get('http://www.randomtext.me/api/', function (res) { console.log(res); }, 'json'); 这样就行了 |
3
lichao 2015-05-06 14:32:21 +08:00
如果是 JSONP 的话,你 API 返回的应该是一个回调函数,而不是一个 JS 对象
|
4
lichao 2015-05-06 14:34:56 +08:00
|
5
binarymann OP @feiyuanqiu 在请教下对一些服务如果用json的话会失败因为跨域,如何解决呢?
XMLHttpRequest cannot load xxx No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access. |
6
lichao 2015-05-06 14:41:58 +08:00
@binarymann JS 有跨域限制,但是服务端没有这个限制,你可以在服务端放个类似 proxy.php,通过服务端去访问其它域的内容
|
7
feiyuanqiu 2015-05-06 14:42:57 +08:00
@binarymann 用 jsonp 啊... jsonp 就是用来解决跨域问题的
|
8
binarymann OP |
9
lichao 2015-05-06 14:50:04 +08:00
|
10
lichao 2015-05-06 14:51:19 +08:00 1
|
11
feiyuanqiu 2015-05-06 15:15:14 +08:00 1
@binarymann
1、需要接口那边支持,一般是你传过去两个参数 回调函数名 和 查询参数,比如你主楼的这个: ?callback=jQuery110205438157829921693_1430892961914&_=1430892961916 回调函数名是 jQuery110205438157829921693_1430892961914,查询参数是 _=1430892961916 如果接口支持 jsonp,就应该返回类似这样的数据: jQuery110205438157829921693_1430892961914({'type':'test'}); 也就是接口会返回一段 js 代码,调用你传入的回调函数,传入的实参就是接口数据,所以需要本地实现 jQuery110205438157829921693_1430892961914 这个函数 如果你是用的 jQuery,直接就按照普通的 ajax 调用的方式处理数据就行了,如果没有用 jQuery,就需要这样做: 2、你需要在本地实现这个函数 jQuery110205438157829921693_1430892961914,用来处理接口返回数据,比如: var jQuery110205438157829921693_1430892961914 = function (data) { console.log(data); } 3、为 body 添加 script 元素,开始执行请求: var script = document.createElement('script'); script.src = 'http://xxx.com?callback=jQuery110205438157829921693_1430892961914&_=1430892961916'; document.body.appendChild(script); |