浅析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 相关文章推荐
JQuery 小练习(实例代码)
Aug 07 Javascript
创建js对象和js类的方法汇总
Dec 24 Javascript
jquery+css3实现会动的小圆圈效果
Jan 27 Javascript
同步异步动态引入js文件的几种方法总结
Sep 23 Javascript
基于Bootstrap分页的实例讲解(必看篇)
Jul 04 Javascript
jQuery上传插件webupload使用方法
Aug 01 jQuery
浅谈angular4生命周期钩子
Sep 05 Javascript
vue2中的keep-alive使用总结及注意事项
Dec 21 Javascript
基于iScroll实现内容滚动效果
Mar 21 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
Dec 07 Javascript
vue增加强缓存和版本号的实现方法
May 01 Javascript
elementui的el-popover修改样式不生效的解决
Jun 30 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
基于文本的留言簿
2006/10/09 PHP
php中的字符编码转换函数用法示例
2014/10/20 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
Zend Framework教程之MVC框架的Controller用法分析
2016/03/07 PHP
Laravel框架实现多数据库连接操作详解
2019/07/12 PHP
发布一个基于javascript的动画类 Fx.js
2010/11/05 Javascript
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
2010/12/03 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
2013/11/20 Javascript
用JavaScript实现类似于ListBox功能示例代码
2014/03/09 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
AngularJS 如何在控制台进行错误调试
2016/06/07 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
JS实现在文本指定位置插入内容的简单示例
2017/12/22 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
2018/07/06 Javascript
Vue调用后端java接口的实例代码
2019/10/28 Javascript
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
使用python Fabric动态修改远程机器hosts的方法
2018/10/26 Python
pytorch点乘与叉乘示例讲解
2019/12/27 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
2014/08/08 HTML / CSS
NFL墨西哥官方商店:Tienda NFL
2017/11/28 全球购物
绿色美容,有机护肤品和化妆品:Safe & Chic
2018/10/29 全球购物
哪些情况下不应该使用索引
2015/07/20 面试题
搞笑爱情保证书
2014/04/29 职场文书
实习护士自荐信
2014/06/21 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
护士求职简历自我评价
2015/03/10 职场文书
Mysql多层子查询示例代码(收藏夹案例)
2022/03/31 MySQL