基于$从服务器获取json数据的几种方法总结。ajax()方法
Json是一种取代xml的数据结构。与xml相比,JSON更小但描述能力强,网络传输数据使用流量更少,速度更快。
Json是一个字符串,用以下符号标记。
{键值对}: JSON对象
}来简化上面的json数组,这是一个带有age数组的对象。
第二,$中dataType属性的值。Ajax()方法
$中的数据类型属性。ajax()方法需要一个String类型的参数,服务器返回的数据类型是预期的。如果没有指定,JQuery会根据http包的mime信息自动返回responseXML或responseText,在第三部分进行解释,并作为回调函数参数传递。可用类型如下:
Xml:返回一个XML文档,可以由JQuery处理。
html:返回纯文本HTML信息;插入DOM时会执行包含的脚本标记。
脚本:返回普通的JavaScript代码。结果不会自动缓存。除非设置了缓存参数。请注意,当发出远程请求时(不在同一个域中),所有post请求都将被转换为get请求。
Json:返回JSON数据。
Jsonp:JSONP格式。当调用SONP形式的函数时,比如myurl?回拨=?,JQuery将自动替换最后一个“?”是执行回调函数的正确函数名。
三。。Mime数据类型和setContentType()方法的响应。
什么是哑剧类型?当将输出结果传输到浏览器时,浏览器必须启动适当的应用程序来处理输出文档。这可以通过各种类型的MIME(多功能互联网邮件扩展协议)来完成。在HTTP中,MIME类型在Content-Type头中定义。
例如,如果您想向客户端发送一个Microsoft Excel文件。那么此时的MIME类型就是“application/vnd.ms-excel”。在大多数实际情况下,该文件将被发送到Execl进行处理(假设我们将Execl设置为处理特殊MIME类型的应用程序)。在Java中,设置MIME类型的方法是通过响应对象的ContentType属性。比如常用的:response . set content type(" text/html;Charset=UTF-8”)。
在最早的HTTP协议中,没有额外的数据类型信息,所有传输的数据都被客户端程序解释为HTML文档。为了支持多媒体数据类型,在HTTP协议中使用附加到文档的MIME数据类型信息来标识数据类型。
每个MIME类型由两部分组成,第一部分是大类数据,如文本、图像等。,二是具体类别。
常见MIME类型:
超文本标记语言文本。html,。html文本/html
纯文本。txt文本/纯文本
RTF文本。rtf应用程序/rtf
GIF图形。gif图像/gif
JPEG图形。ipeg,。jpg图像/jpeg
Au声音文件。au音频/基本
MIDI音乐文件。midi音频/midi,音频/x-midi。
真实音频音乐文件。ra,。ram音频/x-pn-realaudio
Mpg,MPEG视频/mpeg。
AVI档案。avi视频/x-ms视频
GZIP档案。gz应用程序/x-gzip
TAR文件。焦油应用/x-焦油
当客户端程序从服务器接收数据时,它只接受来自服务器的数据流,不知道文档的名称,因此服务器必须使用附加信息来告诉客户端程序数据的MIME类型。
在发送真实数据之前,服务器应该发送标记数据的MIME类型信息。该信息由Content-type关键字定义。例如,对于一个HTML文档,服务器将首先发送下面两行MIME标识信息,它不是真实数据文件的一部分。
内容类型:文本/html
注意第二行是空行,这是必须的。使用这个空行的目的是将MIME信息与真实数据内容分开。
如前所述,在Java中,设置MIME类型的方法是通过Response对象的ContentType属性,设置方法是使用response.setContentType(MIME)语句。response.setContentType(MIME)的作用是让客户端浏览器区分不同种类的数据,根据不同的MIME调用浏览器中不同的程序嵌入模块处理相应的数据。
Tomcat的安装目录\conf\web.xml中定义了大量的MIME类型,可以参考。例如,您可以设置:
response . set content type(" text/html;charset = utf-8 ");超文本标记语言
response . setcontenttype(" text/plain;charset = utf-8 ");文本
应用程序/json
该方法设置发送给客户端的响应的内容类型,并且该响应尚未提交。给定的内容类型可以包括字符编码描述,例如:text/html;字符集=UTF-8 .如果在调用getWriter()方法之前调用此方法,则响应的字符编码将仅根据给定的内容类型进行设置。如果在调用或提交getWriter()方法之后调用此方法,将不会设置响应的字符编码。在使用http协议的情况下,该方法设置Content-type实体头。
四个。使用$获取json数据的三种方法。ajax()方法
dataType参数的配置决定了jquery如何帮助我们自动解析服务器返回的数据。有几种方法可以获得后台返回的json字符串,并将其解析为json对象。下面是一个Java的例子,下面三种方式的结果都如图1所示。项目在内网运行,不能截图,只能拍照。请原谅我。
1, $.ajax()参数没有设置数据类型,后台响应没有设置返回类型。默认情况下,response . setcontenttype(" text/html;charset = utf-8 ");同样作为文本处理,js需要手动使用eval()或$等方法。parsejson()将返回的字符串转换成json对象。
//Java代码:后台获取单台数控定位器历史表的数据。
public void getHistorySingleData()抛出IOException{
http servlet request request = servletactioncontext . get request();
http servlet response response = servletactioncontext . getresponse();
response . set header(" Content-type "," text/html;charset = UTF-8 ");
response . set content type(" text/html;charset = utf-8 ");
string device name = request . getparameter(" device name ");
string start date = request . getparameter(" start date ");
string end date = request . getparameter(" end date ");
singlethistorydata[]singlethistorydata = chartservice . gethistorysingledata(device name,startDate,end date);
system . out . println(singlehistorydata . length);
system . out . println(JSON array . from object(singleHistoryData)。toString());//Print:[{ " time ":" 2016-11110:00 "," State": "Run "," ball ":" { " time ":" 2016-11110:05 "," State "...{} ...]打印几个singleHistoryData对象的信息{ " time ":" 2016-111110:05 "," State "。
response.getWriter()。print(JSON array . from object(singleHistoryData))。toString());
}
/*js代码:选择查询一定时间段内的数据,点击〖查询〗按钮显示*/
$("#search ")。单击(函数(){
var data 1 =[];
var n;
var device name = $(“body”)。attr(" id ");
var startDate = $("#startDate ")。val();
var endDate = $("#endDate ")。val();
$.ajax({
URL:"/av VII/chart/getHistorySingleData ",
类型:“帖子”,
数据:{
“设备名称”:设备名称,
“开始日期”:开始日期,
“结束日期”:结束日期
},
成功:函数(数据){
警报(数据);//-& gt;弹出[{ " time ":" 2016-11110:00 "," State": "Run "," ball": "Lock "。{ "时间": " 2016-11-110:00:05 ","状态":"跑","球":"锁",...当后台出现几个singleHistoryData对象时,打印几个对象的信息{ " time ":" 2016-11-11 10:05 "," State": "Run ",
alert(object . prototype . tostring . call(data));//-& gt;弹出【对象字符串】,表示获取了字符串类型的数据。
var JsonObjs = eval("+data+");//或者:var JsonObjs = $。parseJSON(数据);
alert(JsonObjs);//alert(JsonObjs);-& gt;弹出[object Object],[object object],[object object],[object object],[object object]后台发送几个singleHistoryData对象,然后打印几个[object object]。
n = JsonObjs.length
if(n==0){
Alert("您选择的时间段内没有数据,请重新查询");
}
for(var I = 0;我& ltJsonObjs.lengthi++){
var name = JsonObjs[I][' time '];//对于每一段数据:JsonObjs[i]或JsonObjs[i].time。
var state = JsonObjs[I][' state '];
var ball = JsonObjs[I][' ball '];
var xd = JsonObjs[I][' xd '];
var yd = JsonObjs[I][' yd '];
var ZD = JsonObjs[I][' ZD '];
var xf = JsonObjs[I][' xf '];
var YF = JsonObjs[I][' YF '];
var ZF = JsonObjs[I][' ZF '];
data1[i] = {name:name,state:state,ball:ball,xd:xd,yd:yd,zd:zd,xf:xf,yf:yf,zf:zf}//数字对应下面的头,但是名字不影响控件的使用。
}
if(JsonObjs.length!= 10){
for(var j = 0;j & lt(10-((jsonobjs . length)% 10));J++){ //填充最后一页的空行,保持表格长度不变。
data 1[j+jsonobjs . length]= { name:" ",state:" ",ball:" ",xd:" ",yd:" ",zd:" ",xf:" ",yf:" ",ZF:" " };
}
}
var userOptions = {
" id": id":"kingTable ",///表id是必需的。
“头”:[“时间”、“跑步状态”、“球头状态”、“X方向位置/mm”、“Y方向位置/mm”、“X方向承重/Kg”、“Y方向承重/Kg”]、//
“body”:data 1,//后台显示tbody必须返回的数据。
“foot”:true,//true/false是否显示tfoot -默认为false。
" displaynum": 10。//默认情况下,每页显示的行数必须是10。
“group data num”:6。//默认的组数是10。
Sort:false,///点击表头是否排序true/false——默认为false。
Search:false,///默认为false。没有搜索。
郎:{
GopageButtonSearchText:"搜索"
}
}
var cs = new KingTable(null,user options);
}
});
});
2.在$中设置dataType="json"。ajax()参数,jquery会自动将返回的字符串转换成json对象。后台可以设置为:推荐回复。setcontenttype(" text/html;charset = utf-8 ");或response . setcontenttype(" application/JSON;charset = utf-8 ");
//Java代码:后台获取单台数控定位器历史表的数据。
public void getHistorySingleData()抛出IOException{
http servlet request request = servletactioncontext . get request();
http servlet response response = servletactioncontext . getresponse();
response . set header(" Content-type "," text/html;charset = UTF-8 ");
response . set content type(" text/html;charset = utf-8 ");
string device name = request . getparameter(" device name ");
string start date = request . getparameter(" start date ");
string end date = request . getparameter(" end date ");
singlethistorydata[]singlethistorydata = chartservice . gethistorysingledata(device name,startDate,end date);
system . out . println(singlehistorydata . length);
system . out . println(JSON array . from object(singleHistoryData)。toString());//Print:[{ " time ":" 2016-11110:00 "," State": "Run "," ball ":" { " time ":" 2016-11110:05 "," State "...{} ...]打印几个singleHistoryData对象的信息{ " time ":" 2016-111110:05 "," State "。
response.getWriter()。print(JSON array . from object(singleHistoryData))。toString());
}
/*js代码:第一次加载页面时,会显示指定时间段的数据*/
var data 1 =[];
var device name = $(“body”)。attr(" id ");
var startDate = $("#startDate ")。val(" 2000-01-01 00:00:00 ");
var endDate = $("#endDate ")。val(" 2018-01-01 00:00:00 ");
$.ajax({
URL:"/av VII/chart/getHistorySingleData ",
类型:“帖子”,
数据:{
“设备名称”:设备名称,
“开始日期”:“2000-01-01 00:00:00”,
"结束日期":" 2018-01-01 00:00:00 "
},
数据类型:“json”,
成功:函数(数据){
警报(数据);//-& gt;[对象对象],[对象对象],[对象对象][对象对象],[对象对象],[对象对象]弹出。后台来了几个singleHistoryData对象就打印几个json对象吧:[ObjectObject]。
for(var I = 0;我& lt数据长度;i++){
var name = data[I][' time '];
var state = data[I][' state '];
var ball = data[I][' ball '];
var xd = data[I][' xd '];
var yd = data[I][' yd '];
var ZD = data[I][' ZD '];
var xf = data[I][' xf '];
var YF = data[I][' YF '];
var ZF = data[I][' ZF '];
data1[i] = {name:name,state:state,ball:ball,xd:xd,yd:yd,zd:zd,xf:xf,yf:yf,zf:zf}
}
if(data.length!= 10){
for(var j = 0;j & lt(10-((数据.长度)% 10));J++){ //填充最后一页的空行,保持表格长度不变。
data 1[j+data . length]= {名称:"",状态:"",球:" ",xd:" ",yd:" ",zd:" ",xf:" ",yf:" ",ZF:" " };
}
}
var userOptions = {
" id": id":"kingTable ",///表id是必需的。
“头”:[“时间”、“跑步状态”、“球头状态”、“X方向位置/mm”、“Y方向位置/mm”、“X方向承重/Kg”、“Y方向承重/Kg”]、//
“body”:data 1,//后台显示tbody必须返回的数据。
“foot”:true,//true/false是否显示tfoot -默认为false。
" displaynum": 10。//默认情况下,每页显示的行数必须是10。
“group data num”:6。//默认的组数是10。
Sort:false,///点击表头是否排序true/false——默认为false。
Search:false,///默认为false。没有搜索。
郎:{
GopageButtonSearchText:"搜索"
}
}
var cs = new KingTable(null,user options);
}
});
3.ajax方法参数