浅析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+json实现的搜索加分页效果
Mar 31 Javascript
js判断FCKeditor内容是否为空的两种形式
May 14 Javascript
复制网页内容,粘贴之后自动加上网址的实现方法(脚本之家特别整理)
Oct 16 Javascript
js中for in语句的用法讲解
Apr 24 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
Nov 23 Javascript
js实现下拉列表选中某个值的方法(3种方法)
Dec 17 Javascript
原生JS实现几个常用DOM操作API实例
Jan 19 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
May 24 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
May 09 Javascript
JavaScript继承的特性与实践应用深入详解
Dec 30 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
Sep 27 Javascript
js实现鼠标切换图片(无定时器)
Jan 27 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
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
PHP遍历XML文档所有节点的方法
2015/03/12 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
2016/10/31 PHP
PDO::prepare讲解
2019/01/29 PHP
JS中彻底删除JSON对象组成的数组中的元素
2020/09/22 PHP
jQuery UI Dialog 创建友好的弹出对话框实现代码
2012/04/12 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
2015/08/21 Javascript
JavaScrip调试技巧之断点调试
2015/10/22 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
jQuery操作attr、prop、val()/text()/html()、class属性
2019/05/23 jQuery
python类和继承用法实例
2015/07/07 Python
python3爬取淘宝信息代码分析
2018/02/10 Python
python实现日常记账本小程序
2018/03/10 Python
Python中一些不为人知的基础技巧总结
2018/05/19 Python
tensorflow 加载部分变量的实例讲解
2018/07/27 Python
Numpy之random函数使用学习
2019/01/29 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
如何基于Python批量下载音乐
2019/11/11 Python
Python使用uuid库生成唯一标识ID
2020/02/12 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
日本7net购物网:书籍、漫画、杂志、DVD、游戏邮购
2017/02/17 全球购物
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
Linux常见面试题
2016/10/04 面试题
2014年综治宣传月活动总结
2014/04/28 职场文书
优秀共产党员演讲稿
2014/09/04 职场文书
SpringBoot2零基础到精通之数据与页面响应
2022/03/22 Java/Android