浅析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 相关文章推荐
关于viewport,Ext.panel和Ext.form.panel的关系
May 07 Javascript
jQuery自带的一些常用方法总结
Sep 03 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
Sep 15 Javascript
JS制作图形验证码实现代码
Oct 19 Javascript
微信小程序 开发指南详解
Sep 27 Javascript
JS调用Android、Ios原生控件
Jan 06 Javascript
Node.js开发第三方微信公众平台
Jun 05 Javascript
Angular 项目实现国际化的方法
Jan 08 Javascript
使用pkg打包Node.js应用的方法步骤
Oct 19 Javascript
React+Redux实现简单的待办事项列表ToDoList
Sep 29 Javascript
对vuex中store和$store的区别说明
Jul 24 Javascript
Vue左滑组件slider使用详解
Aug 21 Javascript
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
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
基于jquery的文本框与autocomplete结合使用(asp.net+json)
2012/05/30 Javascript
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
基于vue2.0+vuex+localStorage开发的本地记事本示例
2017/02/28 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
2017/03/29 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
koa+mongoose实现简单增删改查接口的示例代码
2019/05/13 Javascript
[01:08:32]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第二场 1月18日
2021/03/11 DOTA
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
django+echart绘制曲线图的方法示例
2018/11/26 Python
python实现汽车管理系统
2018/11/30 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
详解Python3序列赋值、序列解包
2019/05/14 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
2019/12/12 Python
pytorch中的transforms模块实例详解
2019/12/31 Python
Python求平面内点到直线距离的实现
2020/01/19 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
python实现经纬度采样的示例代码
2020/12/10 Python
html5 button autofocus 属性介绍及应用
2013/01/04 HTML / CSS
Mountain Hardwear官网:攀岩服装和户外装备
2019/09/26 全球购物
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
大学生求职简历的自我评价
2013/10/14 职场文书
普通大学毕业生自荐信
2013/11/04 职场文书
招聘专员岗位职责
2014/03/07 职场文书
法律讲堂观后感
2015/06/11 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
2016年社区“我们的节日·中秋节”活动总结
2016/04/05 职场文书