
Jquery ajax在请求不同域名(外网)的URL时,由于浏览器安全限制(同源策略)是不允许请求的,将会发生错误。如果想要在这样的场景下获取返回的数据,可以参考下面的方法:
1、搭建服务器做代理捉取跨域请求返回的数据,本地应用页面的ajax请求建立的代理服务器就能间接的实现这样的需求。但是此种做法较为复杂,不建议使用;
2、使用jsonp跨域访问,这种方法是较为普遍的解决方案,其实现原理是:HTML的<script>标签是可以突破同源策略从其他来源获取数据,所以可以通过<script>标签引入jsonp文件,然后通过一系列JS *** 作获取数据。
具体实现步骤如下:
利用本地页面js创建一个<script>元素,地址指向第三方的API网址,形如:
<script src=";提供一个回调函数来接收数据(函数名可约定,或通过地址参数传递), 第三方产生的响应为json数据的包装(故称之为jsonp,即json padding),形如:
callback({"name":"hax","gender":"Male"})这样浏览器会调用callback函数,并传递解析后json对象作为参数。本地脚本可在callback函数里处理所传入的数据。
示例代码:
<script>var url = ";
使用jsonp需要后端代码配合, 后台返回的json外面需要由回调函数包裹。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function parse_url(url) {
if (urllastIndexOf('') == 0) {
var str = urlsubstring(urllastIndexOf('') + 1, urllength);
var arr = strsplit('&');
var parames = [];
for (var i = 0; i < arrlength; i++) {
parames[arr[i]split('=')[0]] = arr[i]split('=')[1];
}
return parames;
}
}
var type = parse_url(locationsearch);
if (type) {
if (type['lang'] == 'fr') {
documentgetElementById('id')innerHTML = 'good thanks';
documentgetElementById('id1')innerHTML = 'good thanks';
}
}
这段代码要放到 id 为 'id'和'id1' 这2个元素的后面
也就是说,执行这段代码时,要保证页面元素被加载完成了
locationhost 取出localhost
locationhrefsubstring(0, locationhrefindexOf('/', 8))取出:>
给你提供个思路吧:
找到所有的a标签
遍历并获取每个a标签的href属性
将href属性使用正则表达式匹配href的值
匹配含有test字符串的href值就是选中的a标签
谢谢采纳!
以上就是关于JQuery ajax json怎样获取外网url返回的数据全部的内容,包括:JQuery ajax json怎样获取外网url返回的数据、jQuery获取点击的URL里面的参数,就是点击那个URL就获取那个URL里面的参数,不是当前浏览器里面的参数。、用jquery如何截取这样的URL等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)