浅析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和注册表脚本实现右键收藏Web页选中文本
Jan 28 Javascript
表单提交前触发函数返回true表单才会提交
Mar 11 Javascript
JS JQUERY实现滚动条自动滚到底的方法
Jan 09 Javascript
jQuery中unwrap()方法用法实例
Jan 16 Javascript
jQuery根据元素值删除数组元素的方法
Jun 24 Javascript
Web前端开发工具——bower依赖包管理工具
Mar 29 Javascript
jQuery模拟完美实现经典FLASH导航动画效果【附demo源码下载】
Nov 09 Javascript
ES6正则的扩展实例详解
Apr 25 Javascript
vue.js实现刷新当前页面的方法教程
Jul 05 Javascript
老生常谈Bootstrap媒体对象
Jul 06 Javascript
vue和better-scroll实现列表左右联动效果详解
Apr 29 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
Dec 04 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代码
2006/12/06 PHP
帖几个PHP的无限分类实现想法~
2007/01/02 PHP
PHP使用JSON和将json还原成数组
2015/02/12 PHP
php无限级分类实现方法分析
2016/10/19 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
2019/03/21 PHP
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
2006/12/22 Javascript
jQuery 名称冲突的解决方法
2011/04/08 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
jQuery的Ajax的自动完成功能控件简要说明
2013/02/22 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
javascript元素动态创建实现方法
2015/05/13 Javascript
一分钟理解js闭包
2016/05/04 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
vuex进阶知识点巩固
2018/05/20 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
基于JavaScript实现贪吃蛇游戏
2020/03/16 Javascript
jQuery实现简单评论区功能
2020/10/26 jQuery
[03:07]DOTA2英雄基础教程 冰霜诅咒极寒幽魂
2013/12/06 DOTA
Django中URLconf和include()的协同工作方法
2015/07/20 Python
Python 模板引擎的注入问题分析
2017/01/01 Python
PyQT实现多窗口切换
2018/04/20 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
Ranorex通过Python将报告发送到邮箱的方法
2020/01/12 Python
Python实现仿射密码的思路详解
2020/04/23 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
2020/12/01 Python
LightInTheBox西班牙站点:全球商品在线采购
2016/09/22 全球购物
统计每一学生的平均成绩
2014/06/06 面试题
最新结婚典礼主持词
2014/03/14 职场文书
学生安全承诺书
2014/05/22 职场文书
计算机售后服务承诺书
2014/05/30 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
背起爸爸上学观后感
2015/06/08 职场文书