浅析jQuery Ajax请求参数和返回数据的处理


Posted in Javascript onFebruary 24, 2016

刚接触学会用jQuery ajax的时候,觉得真东西好神奇,这样就可以把数据取回来了啊。然后我可以把取回来的数据渲染到页面上,一颗赛艇。

之前很早接触到项目,并不知道怎么优雅的去用jquery ajax(现在也不优雅);

那个时候看别人写的代码

$.post("","",...)

也有

$.get("","",...)

还有

$.ajax()

当然现在知道点,这些写法都是一个意思,还是习惯用 $.ajax() 写写吧。

之前的数据处理,发送数据请求(json的数据格式),然后自己通过下面的方式

var request = {};
request.name = $(".name").val();
request.age = $(".age").val();
request.sex = $(".sex").val();
//...

当时表单发送的参数项少,所以没觉得什么,到后来一个表单很多项数,也这么写,结果 request 就手工写了好多行,虽然能用吧,但是看看这样的代码就觉着哪里不对劲吧,至少很不“优雅”。

后来,发现其实jquery有个 serialize 的方法可以序列化表单数据,可以省事很多。

w3c_jquery_serialize-demo

处理返回数据,渲染到页面上去。

之前的做法也是和上面一模一样的吧,返回的数据是json数据格式的,然后分别取值赋值给页面元素,所以代码往往是这样的。

  浅析jQuery Ajax请求参数和返回数据的处理

如果数据再多点,真的是感觉略难看。其实应该是有更好的做法的,返回的是一个json对象,所以我们可以通过遍历对象的属性值取到所有值然后依次渲染到页面对应元素即可。

对象遍历可以用 for-in 来写(有更好的方法来写么?)

$.ajax({
//...
success:function(result){
for(var v in result){
// 如果渲染的元素都是统一的输入框形式的话,
$("form").find("input[name="+ v +"]").val(result[v]); 
// 如果有其他元素 则另外单独校验处理
}
}
})

上面name(或者其他tag在页面中先写好,和返回数据的属性一致)。

jQuery中ajax的4种常用请求方式

1.$.ajax()返回其创建的 XMLHttpRequest 对象。

$.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数信息。详细参数选项见下。

如果你指定了 dataType 选项,请确保服务器返回正确的 MIME 信息,(如 xml 返回 "text/xml")。

实例:

保存数据到服务器,成功时显示信息。

$.ajax({
type: "post",
dataType: "html",
url: '/Resources/GetList.ashx',
data: dataurl,
success: function (data) {
if (data != "") {
$("#pager").pager({ pagenumber: pagenumber, pagecount: data.split("$$")[1], buttonClickCallback: PageClick });
$("#anhtml").html(data.split("$$")[0]);

}
}
});

2.通过远程 HTTP GET 请求载入信息。

这是一个简单的 GET 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。

实例:

$.get("test.cgi", { name: "John", time: "2pm" },
function(data){
alert("Data Loaded: " + data);
});

3. 通过远程 HTTP POST 请求载入信息。

这是一个简单的 POST 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。

实例:

$.post("/Resources/addfriend.ashx", { "fid": fids, "fname": fnames, "tuid": tuids, "tuname": tunames }, function (data) {
if (data == "ok") {
alert("添加成功!");
}
})

4.通过 HTTP GET 请求载入 JSON 数据。

实例:

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
function(data){
$.each(data.items, function(i,item){
$("<img/>").attr("src", item.media.m).appendTo("#images");
if ( i == 3 ) return false;
});
});

以上内容是小编给大家介绍的jQuery Ajax请求参数和返回数据的处理,希望对大家有所帮助!

Javascript 相关文章推荐
JavaScript操作XML实例代码(获取新闻标题并分页,并分页)
May 25 Javascript
js中如何复制一个对象并获取其所有属性和属性对应的值
Oct 24 Javascript
js正则表达exec与match的区别说明
Jan 29 Javascript
jQuery使用slideUp方法实现控制元素缓慢收起
Mar 27 Javascript
jquery实现清新实用的网页菜单效果
Aug 28 Javascript
JQuery核心函数是什么及使用方法介绍
May 03 Javascript
jQuery File Upload文件上传插件使用详解
Dec 06 Javascript
JavaScript箭头函数_动力节点Java学院整理
Jun 28 Javascript
ajax与jsonp的区别及用法
Oct 16 Javascript
js取0-9随机取4个数不重复的数字代码实例
Mar 27 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
Dec 20 Javascript
vue+flask实现视频合成功能(拖拽上传)
Mar 04 Vue.js
jQuery+formdata实现上传进度特效遇到的问题
Feb 24 #Javascript
JQuery EasyUI的使用
Feb 24 #Javascript
使用jQuery监听DOM元素大小变化
Feb 24 #Javascript
JavaScript中的闭包
Feb 24 #Javascript
jQuery中判断对象是否存在的方法汇总
Feb 24 #Javascript
jquery中键盘事件小结
Feb 24 #Javascript
javascript实现九宫格相加数值相等
May 28 #Javascript
You might like
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
显示、隐藏密码
2006/07/01 Javascript
javascripit实现密码强度检测代码分享
2013/12/12 Javascript
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
JavaScript实现自动变换表格边框颜色
2015/05/08 Javascript
全面解析Bootstrap排版使用方法(标题)
2015/11/30 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
深入理解基于vue-cli的vuex配置
2017/07/24 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
JS实现判断移动端PC端功能
2020/02/21 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
2020/03/07 Javascript
vue全屏事件开发详解
2020/06/17 Javascript
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
django上传图片并生成缩略图方法示例
2017/12/11 Python
python复制文件到指定目录的实例
2018/04/27 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
2019/01/14 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
python线程里哪种模块比较适合
2020/08/02 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
大学生实习期自我评价范文
2013/10/03 职场文书
护理学专业推荐信
2013/12/03 职场文书
物流专业大学生职业生涯规划书范文
2014/01/15 职场文书
创业培训计划书
2014/05/03 职场文书
产品推广策划方案
2014/05/10 职场文书
考察现实表现材料
2014/05/19 职场文书
java项目构建Gradle的使用教程
2022/03/24 Java/Android