JQuery ajax json怎样获取外网url返回的数据

JQuery ajax json怎样获取外网url返回的数据,第1张

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外面需要由回调函数包裹。

json文件是一种轻量级的数据交互格式。一般在jquery中使用getJSON()方法读取。

$getJSON(url,[data],[callback])

url:加载的页面地址

data: 可选项,发送到服务器的数据,格式是key/value

callback:可选项,加载成功后执行的回调函数

1首先建一个JSON格式的文件userinfojson 保存用户信息。如下:

1234567891011121314151617

[{"name":"张国立","sex":"男","email":"zhangguoli@123com"},{"name":"张铁林","sex":"男","email":"zhangtieli@123com"},{"name":"邓婕","sex":"女","email":"zhenjie@123com"}]

2其次建一个页面用于获取JSON文件里的用户信息数据,并显示

123456789101112131415161718192021222324252627282930313233343536373839404142

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 10 Transitional//EN" ">

var string_a = 'distance=20&limit_start=0&limit_num=3&lng=11407&lat=2253';

var string = string_asplit('&');

var res = {};

for(var i = 0;i<stringlength;i++){

    var str = string[i]split('=');

    res[str[0]]=str[1];

}

documentwrite(JSONstringify(res));

结果

后台解析前端传来的json数据格式听简单的#

比如客户端传来的参数格式url

从最外边可以知道我们传给的最外面的参数是data所以后台接收到的也只是data的参数

所以我们现在需要做的就是解析传给后台的json数据格式

代码如下:

// 谷歌产生json对象的工具

Gson json = new Gson();

// 产生 P{} 里面参数接收对象

Param p = new Param(); Param对象里的属性是pageNum,type,sessionKey(注意的是该对象指的是p,对象里面的属性也必须和客户端中json数据格式中的字段名称一致)

//需要将客户端传来的json数据转换成什么对象

p = jsonfromJson(data, Paramclass); data为最外层的json数据对象

获取对象中的参数的值

pgetType();就能获取到客户端传来的参数的值了###

很简单的 API一看就明白了###

最外层当然为

gsonjar包

public class Base {

private String m;

private String c;

public String getM() {

return m;

}

public void setM(String m) {

thism = m;

}

public String getC() {

return c;

}

public void setC(String c) {

thisc = c;

}

对象中的对象

package comismartinfoilifeapientitiesparameter;

public class Param extends Base{

private ParamValue p; 

public ParamValue getP() {

return p;

}

public void setP(ParamValue p) {

thisp = p;

}

}

package comismartinfoilifeapientitiesparameter;

public class ParamValue { 

private int pageNum;

private int type; 

private int groupInfoId;

private int groupInfoReplyId;

private String sessionKey; 

private int groupTitle;

private String groupContent;

private String phone;

private int buttonType;

private int replayId;

private int disclosure;  

public int getPageNum() {

return pageNum;

}

public void setPageNum(int pageNum) {

thispageNum = pageNum;

public String getSessionKey() {

return sessionKey;

}

public void setSessionKey(String sessionKey) {

thissessionKey = sessionKey;

}

public int getType() {

return type;

}

public void setType(int type) {

thistype = type;

}

public int getGroupInfoId() {

return groupInfoId;

}

public void setGroupInfoId(int groupInfoId) {

thisgroupInfoId = groupInfoId;

}

public int getGroupInfoReplyId() {

return groupInfoReplyId;

}

public void setGroupInfoReplyId(int groupInfoReplyId) {

thisgroupInfoReplyId = groupInfoReplyId;

}

public int getGroupTitle() {

return groupTitle;

}

public void setGroupTitle(int groupTitle) {

thisgroupTitle = groupTitle;

}

public String getGroupContent() {

return groupContent;

}

public void setGroupContent(String groupContent) {

thisgroupContent = groupContent;

}

public String getPhone() {

return phone;

}

public void setPhone(String phone) {

thisphone = phone;

}

public int getButtonType() {

return buttonType;

}

public void setButtonType(int buttonType) {

thisbuttonType = buttonType;

}

public int getReplayId() {

return replayId;

}

public void setReplayId(int replayId) {

thisreplayId = replayId;

}

public int getDisclosure() {

return disclosure;

}

public void setDisclosure(int disclosure) {

thisdisclosure = disclosure;

}  

}

以上就是关于JQuery ajax json怎样获取外网url返回的数据全部的内容,包括:JQuery ajax json怎样获取外网url返回的数据、如何读取Json文件的数据、用javascript把url传值格式转化为JSON格式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10076418.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存