ajax post提交的方式
ajax的post注意事项
注意post请求的Content-Type为application/x-www-form-urlencoded,参数是在请求体中,即上面请求中的Form Data(后台通过Request.Form["name"]来获取)。
如果Content-Type为application/json;charset=UTF-8或text/plain;charset=UTF-8,则请求表单参数在RequestPayload中(后台用StreamReader方式来读取:
public string GetPayloadData(HttpRequest req)
{
StreamReader r = new StreamReader(req.InputStream);
req.InputStream.Position = 0;
var temStr = r.ReadToEnd();
return temStr; //json字符串,序列化成对象
}
)。
最近在看书时才真正搞明白,服务器为什么会对表单提交和文件上传做特殊处理,因为表单提交数据是名值对的方式,且Content-Type为application/x-www-form-urlencoded,而文件上传服务器需要特殊处理,普通的post请求(Content-Type不是application/x-www-form-urlencoded)数据格式不固定,不一定是名值对的方式,所以服务器无法知道具体的处理方式,所以只能通过获取原始数据流的方式来进行解析。
jquery在执行post请求时,会设置Content-Type为application/x-www-form-urlencoded,所以服务器能够正确解析,而使用原生ajax请求时,如果不显示的设置Content-Type,那么默认是text/plain,这时服务器就不知道怎么解析数据了,所以才只能通过获取原始数据流的方式来进行解析请求数据。(转自:http://blog.csdn.net/mhmyqn/article/details/25561535)
Ext.Ajax
默认post的Content-Type为application/x-www-form-urlencoded,由于项目中post的一般是json对象,所以改为Content-Type: 'application/json,后台接受到json反序列化为model对象.
function ajax(url,params,jsonObject,successCallback,methodType)
{
if(!url)
{
alert('Ajax缺少参数:请求路径.');
return;
}
if(!methodType)
{
methodType='get';
} var header={};
if(methodType.toLowerCase() =='post')
{
header={ 'Content-Type': 'application/json; charset=utf-8' };
}
if(!jsonObject)
{
jsonObject={};
}
if(!params)
{
params={};
} Ext.Ajax.request({
url: url,
headers: header,
params:params,
jsonData: jsonObject, /*request payload*/
method: methodType,
success: function (response, options) {
if(!successCallback)
{
alertt('操作成功.');
}
else
{
successCallback(response,options);
}
},
failure: function (response, options) {
//Ext.MessageBox.alert('失败', '请求超时或网络故障,错误编号:' + response.status);
},
callback:function(option, success, response){//不管成功失败都可以拿到response
//var res = Ext.decode(response.responseText);
// if (success )
// {
// Ext.MessageBox.alert("成功","成功");
// }
// else {Ext.MessageBox.alert("失败",$(response.responseText).filter("title").html());} //拿到错误页面的标题
}
});
}
get调用:
//ajax参数url,extraparams,jsonObject,callback(response,options),methodtype="get/post"
ajax("Services/Manage.ashx",{method:'GetInitInfo'},null,function(response){
var dataStr=response.responseText;
//alertt(dataStr);
eval("var keyValues="+dataStr);
(new ExtFormUtils()).setKeyValues("panelFill","panelFill",keyValues);
},"get");
返回值不需要处理的(默认弹出:操作成功.):
ajax("Services/Manage.ashx",{method:'GetInitInfo'});
post调用:
ajax("Services/Manage.ashx",{method:'GetInitInfo'},{Name:'aa',sex:'male',age:21},null,"post");


ajax post提交的方式的更多相关文章
- $.AJAX参数提交及后台获取方式
$.AJAX默认是get方式提交,所以你在后台只能用获取url参数的方式获取,可指定type为post更改提交方式: 在后台可通过Request["控件name/url参数key" ...
- ajax数据提交数据的三种方式和jquery的事件委托
ajax数据提交数据的三种方式 1.只是字符串或数字 $.ajax({ url: 'http//www.baidu.com', type: 'GET/POST', data: {'k1':'v1'}, ...
- Django之ORM多对多表创建方式,AJAX异步提交,分页器组件等
MTV与MVC MTV模型: M:模型层(models.py),负责业务对象和数据库关系的映射(ORM) T:模板层(Template),负责如何把页面展示给用户(HTML) V:视图层( ...
- 【http】四种常见的 POST 提交数据方式
来源:http://www.cnblogs.com/aaronjs/p/4165049.html HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT ...
- MVC中处理表单提交的方式(使用html扩展方法+juqery插件)
这里使用扩展方法来扩展基于jquery.form 插件,实现基于异步的ajax的提交方式.
- 四种常见的 POST 提交数据方式
HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端提交数据,本文 ...
- ASP.NET MVC 网站开发总结(五)——Ajax异步提交表单之检查验证码
首先提出一个问题:在做网站开发的时候,用到了验证码来防止恶意提交表单,那么要如何实现当验证码错误时,只是刷新一下验证码,而其它填写的信息不改变? 先说一下为什么有这个需求:以提交注册信息页面为例,一般 ...
- Web 四种常见的POST提交数据方式
HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端提交数据,本文 ...
- (转)四种常见的 POST 提交数据方式
四种常见的 POST 提交数据方式(转自:https://imququ.com/post/four-ways-to-post-data-in-http.html) HTTP/1.1 协议规定的 HTT ...
随机推荐
- 值得一看:利用对标帮助客户进行GAP分析,找到业务发展方向!
最好是跟CBM一起来使用. Presentation Here: https://ibm.biz/BdXJrQ CAN ONLY ACCESS at IBM internal.
- IIS网站属性中没有ASP.NET选项
打开IIS6,右击属性,居然没有发现ASP.NET的配置选项,虽然好久没搞这个了,但是印象中绝对是有一个ASP.NET选项卡的.我很奇怪,我以为是.net framework 2.0没安装,下载下来安 ...
- Homebrew
Homebrew官网:http://brew.sh Homebrew installs the stuff you need that Apple didn't Homebrew的安装非常简单,打开终 ...
- 私服 Nexus 的配置
一.概述 1.概要 现在的项目基本都是用Maven来管理工程,这样一来在公司内容搭建一个私服就非常有必要了,这样一来可以管理公司内部用的JAR包,也可以管理第三方的各种JAR来,以免每次都要从外网的仓 ...
- 第 3 章 MySQL 存储引擎简介
第 3 章 MySQL 存储引擎简介 前言 3.1 MySQL 存储引擎概述 MyISAM 存储引擎是 MySQL 默认的存储引擎,也是目前 MySQL 使用最为广泛的存储引擎之一.他的前身就是我们在 ...
- Android程序的签名保护及绕过方法
随着Android 市场的扩大,各类盗版.破解.打包党纷纷涌现,其使用的手法无非是apk _> smali ->修改代码 ->重打包签名,为对抗此类技术,广大程序员挖掘了Androi ...
- [leetcode]Second Highest Salary
找第二大 # Write your MySQL query statement below SELECT MAX(Salary) FROM Employee WHERE Salary NOT IN ( ...
- nginx 安装与反向代理测试 under MAC
安装 在 Mac 下可以直接使用 homebrew 安装 nginx brew search nginx brew install nginx 启动 nginx: sudo nginx,访问 8080 ...
- MacBook 蓝牙无法搜索设备
背景 经常把MacBook合上盖子就塞进包里,用时打开盖子就继续操作,偶尔会出现刚刚还在用的罗技蓝牙鼠标,重新打开笔记本后就连接不上了,而且也无法搜索到周边的蓝牙设备. 解决方案 快捷键:Option ...
- android自定义RadioGroup实现可以添加多种布局
android自带的RadioGroup是继承自LinearLayout,如果布局的时候不是直接写radiobutton,即radiobutton外面还包了一层容器,这时分组是不成功的,因为查找不到r ...