jQuery ajax get与post后台交互中的奥秘
这两天在做关注功能模块(类似于Instagram)。多处页面都需要通过一个“关注”按钮进行关注或者取消该好友的操作。一个页面对应的放一个按钮,进行操作。效率低维护性差。因此想通过jQuery的ajax方法进行异步操作,效率高,见效快,将其封装,只需要引用几个JS文件,即可轻松的使用。因此最先想到了使用get方法。
首先引用jQuery类库文件和json2.js(靠谱的家具,主要用来把后台返回给前台的字符串变成JSON对象。FF中不需要引用该文件,主要是在IE中,因为IE不支持JSON.parse方法)。
<!--[if IE]><script type="text/javascript" src="json2.js"></script><![endif]--> 使用该注释只有IE能够识别,目的就是为了在IE浏览器中引用json2.js,而其他浏览器中不对其进行引用。
按照如下代码实现功能,具体遇到的坑爹问题稍后进行分析。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>jQuery get与post奥秘</title> <script src="jquery-1.4.3.min.js" type="text/javascript"></script> <!--[if IE]><script type="text/javascript" src="json2.js"></script><![endif]--> <script type="text/javascript">
function FollowMeOperate() {
//非常感谢key yao的耐心的解释,缓存问题因此加上时间戳就可以使用get方法,由此完全可以证明之前我的推断-都是缓存搞的鬼
$.get("FollowMeAJAX.aspx?t=" + new Date(), { followID: 429 }, function(data, action) {
//$.post("FollowMeAJAX.aspx", { followID: 429 }, function(data, action) {
//之前使用get请求时会发现第二次点击按钮时未触发后台事件,因此被迫只能使用post请求
//$.get("FollowMeAJAX.aspx?Param=Operate", { followID: GetUrlParam("id") }, function(data, action) {
var json = JSON.parse(data);
if (json.success) {
var link = $("#_linkFollow"); //改变状态
if (link.text() == "[关注]") {
link.text("[取消]");
} else {
link.text("[关注]");
}
}
alert(json.msg);
});
}
</script> </head>
<body>
<form id="form1" runat="server">
<div>
<a id="_linkFollow" href="javascript:FollowMeOperate();">[关注]</a>
</div>
</form>
</body>
</html>
后台调用返回测试JSON代码(FollowMeAJAX.aspx):
protected void Page_Load(object sender, EventArgs e)
{
//用JQuery get post 进行回传JSON格式时,必须使用正规的JSON 因此各个属性值也需要用双引号包起来,否则前台JQuery进行JSON读取时会报错
Response.Write("{\"success\":true,\"msg\":\"使用get只能与后台交互一次,使用post可以与后台交互多次!\"}");
Response.End();
}
如果将前台使用$.get方法你会发现每次点击“关注”链接时都能正确的弹出对话框提示我们后台反馈回来的信息,不过不要被这种假象给蒙蔽了,坑爹现在才刚刚开始,在后台进行断点跟踪,我们会发现使用$.get方法时,当点击链接第一次时,断点会到后台处,可是当点击1次以上的次数时,始终不会跳转到后台去,但还总用假象来提示对话框,让我们误以为已经与后台交互过了.
当初我遇到的问题就是,前台明明提示我关注操作成功,可是数据库中的字段却并未修改(第一次操作除外).直到我将$.get方法替换为$.post方法时才解决问题.
草草的查了下资料,发现get会被缓存,而post不会被缓存,因此断定,使用$.get方法时肯定是缓存在其中给我捣鬼,毕竟压根就没有与后台交互,你哪来的反馈信息给我?
希望大家在使用$.get与$.post能够注意下,以免浪费很多不必要的时间...在不断的总结中学习,效果才是最好的。
jQuery ajax get与post后台交互中的奥秘的更多相关文章
- jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法
jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法 在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们 ...
- jquery ajax跨域请求后台的简单例子
一.简介AJAX 是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新. ajax() 方法通过 HTTP 请求加载远程数据. 该方法是 jQuery 底层 AJAX 实现.简 ...
- Jquery Ajax和getJSON获取后台普通Json数据和层级Json数据解析
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 使用Jquery.AJAX方法和PHP后台数据交互小结
使用jQuery的AJAX方法和后台PHP进行数据交互,交互采用的数据格式JSON格式. 我主要小小的总结了一下,我使用AJAX方法时候遇到一些小小的问题. 第一:在传递数据的时候,传输地址注意是否正 ...
- .Net中jQuery.ajax()调用asp.net后台方法 总结
利用JQuery的$.ajax()调用.Net后台方法有多种方式, 不多说了 直接上代码 前台代码 <script type="text/javascript"> $ ...
- Javascript 中ajax实现前台向后台交互
第一种情况:前台传入字符串参数 后台返回json字符串.或是json数组 代码如下: 前台: $.ajax({ url: "xxx/xxx.action", data: &quo ...
- JQuery Ajax调用asp.net后台方法
利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法. 先来个简单的实例热热身吧. 1.无参数的方法调用 asp.net code: using System.Web.Scrip ...
- 前台jquery+ajax+json传值,后台处理完后返回json字符串,如何取里面的属性值?(不用springmvc注解)
一.取属性值 前台页面: function select(id){ alert("hfdfhdfh"+id); $.ajax({ url:"selectByid.jsp& ...
- jQuery.ajax()调用asp.net后台方法
利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法.介意方法名不要重名 建一个WebFormAjax名aspx文件 CS <%@ Page Language=" ...
随机推荐
- Nacos——注册中心
目录 1.什么是nacos 2.使用--依赖+配置文件 3.Nacos服务分级存储模型 4.服务跨集群调用问题 5.服务集群属性--配置服务集群 6. Nacos-NacosRule负载均衡 7.根据 ...
- 解决Xshell 连接Linux 窗口不活动会自动断开连接
修改linux服务器ssh断开时间 修改profile配置 vim /etc/profile 增加配置 后面单位秒 这里就是三分钟不活动断开连接 TMOUT=180 然后使用 wq! 进行保存,使 ...
- python3实战之字幕vtt与字母srt的相互转换
关于 0.本文将介绍一个字幕格式vtt与srt相互转换的py脚本. 1.代码大部分出自: https://www.cnblogs.com/BigJ/p/vtt_srt.html 2.但是自己针对上面的 ...
- codeforce-601A. The Two Routes(最短路)
题意: 给你N个点表示N个站,有汽车和火车,汽车只能走公路,火车只能走铁路. 然后给你M条双向路,代表这两个点之间有铁路连接. 然后告诉你如果两个点之间没有铁路,那么就是公路连接. 问你汽车和火车都到 ...
- TLS、SSL
TLS/SSL 的功能实现主要依赖于三类基本算法:散列函数 Hash.对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性. ...
- Masked Gradient-Based Causal Structure Learning
目录 概 主要内容 最终的目标 代码 Ng I., Fang Z., Zhu S., Chen Z. and Wang J. Masked Gradient-Based Causal Structur ...
- vue为什么要设计成异步队列渲染
异步队列渲染 上一篇文章是在vue2.0 中通过Object.defineProperty去拦截并监听数据变化的响应式原理,这篇文章将会沿着图谱继续深入探索,在依赖被通知变化了之后,会触发vue当中的 ...
- playwright--自动化(二):过滑块验证码 验证码缺口识别
前两天需要自动化登录一个商城的后台 用的是playwright 没有用selenium 中间出了一个滑块验证 现阶段playwright教程不是太多,自己做移动的时候各种找,费劲巴拉的.现在自己整出来 ...
- PostgresSQL客户端pgAdmin4使用
1.说明 pgAdmin 4是一款为PostgreSQL设计的可靠和全面的数据库设计和管理软件, 它允许您连接到特定的数据库,创建表和运行各种从简单到复杂的SQL语句. 它支持的操作系统包括Linux ...
- javascript实现base64格式转码与解码
最近碰到一个需求,后端返回base64格式的数据,前端需要进行base64格式解码,好了,前端采用内部提供的atob函数进行解码,开完成,交付测试,然后测试小哥哥小姐姐反馈说中文乱码! 然后查了一下, ...