关于Ajax的type为post提交方式出现请求失效问题
最近碰到这样一个问题,原本一个ajax异步提交数据之前是很好的,很多系统都延用了均未出现任何问题。最近这个版本却出现ajax方式post数据不到后台程序,让我折腾了好几天。起初的ajax是这样写的:
01.
$.ajax({
02.
type:
'POST'
,
03.
url:
"/Ajax/SaveData.aspx"
,
04.
dataType:
"json"
,
05.
data:
"RequestTime="
+ (
new
Date()).toString()+
"&WorkFlowInfo="
+jsonText,
06.
beforeSend:
function
() {
07.
},
08.
success:
function
(msg) {
09.
$(
"div[class='datagrid-mask']"
).hide();
10.
$(
"div[class='datagrid-mask-msg']"
).hide();
11.
alert(msg.mes);
12.
if
(msg.op !=
"err"
)
13.
window.location.reload();
14.
15.
},
16.
error:
function
(errorMsg) {
17.
$(
"div[class='datagrid-mask']"
).hide();
18.
$(
"div[class='datagrid-mask-msg']"
).hide();
19.
alert(
"发生了一个错误"
);
20.
}
21.
});
当我的jsonText字符串不是很长的情况下,是可以post至后台服务的。那么既然我的type为post方式,与数据长短有何关系对吧?你或许会如此坚定的想。
易错点:
那么为何当jsonText过长时post提交至后台失败呢?细心的网友可能会发现虽然是post方式但是data的书写方式是不对的,data原本就是接受json类型的参数和数据的,上面的代码却将之当做了直接在url内传递参数的形式,换言之就是将ajax的psot提交方式活生生地变换为了get方式提交。
get方式提交是直接在url内传递参数和数据,url内有最大字数限制的,所以当jsonText过长时就提交不至后台服务。
如何纠正?
既然是data的书写方式不对,那么我们只需要纠正一下这个地方即可,纠正后的示例代码如下所示:
01.
$.ajax({
02.
type:
'POST'
,
03.
url:
"/Ajax/SaveData.aspx"
,
04.
dataType:
"json"
,
05.
data: {RequestTime:(
new
Date()).toString(),WorkFlowInfo:escape(jsonText)},
06.
beforeSend:
function
() {
07.
},
08.
success:
function
(msg) {
09.
$(
"div[class='datagrid-mask']"
).hide();
10.
$(
"div[class='datagrid-mask-msg']"
).hide();
11.
alert(msg.mes);
12.
if
(msg.op !=
"err"
)
13.
window.location.reload();
14.
15.
},
16.
error:
function
(errorMsg) {
17.
$(
"div[class='datagrid-mask']"
).hide();
18.
$(
"div[class='datagrid-mask-msg']"
).hide();
19.
alert(
"发生了一个错误"
);
20.
}
21.
});
这样一来就可以正常post数据至后台服务了的。
关于Ajax的type为post提交方式出现请求失效问题的更多相关文章
- ajax的get与post提交方式
Get方式的用户名验证 1.编写html代码 <form> 用户名[GET]:<input id="usernameID" type="text&quo ...
- ajax参数contentType与数据提交方式
使用bootstrapTable时,服务器端无法获取参数(flask,request.form.get方法),检查发现是因为ajax提交的时候,方式是payload,要想用form提交,需要设置con ...
- 今天在研究jquery用ajax提交form表单中得数据时,学习到了一种新的提交方式
今天在研究jquery用ajax提交form表单中得数据时,学习到了一种新的提交方式 jquery中的serialize() 方法 该方法通过序列化表单值,创建 URL 编码文本字符串 序列化的值可在 ...
- 利用 ajax自定义Form表单的提交方式
需求场景:有时候单纯的form表单无法向后端传递额外的参数 比如需要action传递js异步生成的参数 ,form表单默认的action就无法满足需求,这时就需要我们自定义form表单的提交方式. h ...
- web 开发之js---ajax 中的两种提交方式ajax post 和 ajax get 实例
()post http://04101334.iteye.com/blog/637695/ ()get function serializeElement(element) { var method ...
- ajax的post提交方式和传统的post提交方式哪个更快?
如果同时用ajax和post提交先执行哪个呢?是ajax返回后再执行post呢还是同时执行? ajax的post提交方式和传统的post提交方式哪个更快? >> php这个答案描述的挺清楚 ...
- ASP.NET MVC 表单的几种提交方式
下面是总结一下在ASP.NET MVC中表单的几种提交方式. 1.Ajax提交表单 需要引用 <script type="text/javascript" src=" ...
- 【整理】Ajax异步实现的几种方式总结
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术.GET ...
- POST不同提交方式对应的Content-Type,及java服务器接收参数方式
POST不同提交方式对应的Content-Type,及java服务器接收参数方式 注:本博客参考了网上的文章结合自己工作总结后所写,主要用于记录自己工作所得,如有错误请批评指正. 简介: Conten ...
随机推荐
- html5 article标签举例
<article> 是html5中引入的新标签可以实现正向反向列表排序功能 使用以前的html4进行列表排序,可以使用下列形式 <h1>Top Three Teams</ ...
- Java 序列化 transient关键字
Java 序列化 transient关键字 @author 敏敏Alexia 转自:http://www.cnblogs.com/lanxuezaipiao/p/3369962.html 1. tra ...
- hdu_5904_LCIS(DP)
题目链接:hdu_5904_LCIS 题意: 给你两串数,让你找这两串数的最长公共子序列,并且这个最长公共子序列是连续的数值 题解: 我们首先先分别处理出a,b的每个数的最长连续的长度 然后随便找一串 ...
- 可靠通信的保障 —— 使用ACK机制发送自定义信息——ESFramework 通信框架4.0 快速上手(12)
使用ESPlus.Application.CustomizeInfo.Passive.ICustomizeInfoOutter接口的Send方法,我们已经可以给服务端或其它在线客户端发送自定义信息了, ...
- pc app 桌面打包
进入 http://nwjs.io/ 下载 创建web项目,在项目根目录 创建文件package.json并填写 1 2 3 4 5 6 7 { "name": " ...
- SQL Server 把当前日期中月份和几号中的0 去掉
select left(convert(varchar(10),getdate(),20),4)+replace(right(convert(varchar(10),getdate(),20),6), ...
- jq 进度条插件
/***进度条*/var ProgressScrollBar = function (model) { this.defaults = { isCanMove: true,//是否启用拖动 conta ...
- ***参考Catch That Cow(BFS)
Catch That Cow Time Limit : 4000/2000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Tot ...
- myeclipse中的类恢复之前的版本方法
1.右键要恢复的文件,点击如下的选项. 2.界面中出现之前保存的版本,双击要查看的版本,可对比版本之间的不同之处.点击Replace,恢复版本.
- CSS传统布局之页面布局实例
传统的页面布局依赖于盒模型+流动模型(flow)+浮动模型(float)+层模型(layer)来实现页面的布局,具体方法是通过盒模型+display属性+float属性+position属性来加以实现 ...