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提交的方式的更多相关文章

  1. $.AJAX参数提交及后台获取方式

    $.AJAX默认是get方式提交,所以你在后台只能用获取url参数的方式获取,可指定type为post更改提交方式: 在后台可通过Request["控件name/url参数key" ...

  2. ajax数据提交数据的三种方式和jquery的事件委托

    ajax数据提交数据的三种方式 1.只是字符串或数字 $.ajax({ url: 'http//www.baidu.com', type: 'GET/POST', data: {'k1':'v1'}, ...

  3. Django之ORM多对多表创建方式,AJAX异步提交,分页器组件等

    MTV与MVC MTV模型: ​ M:模型层(models.py),负责业务对象和数据库关系的映射(ORM) ​ T:模板层(Template),负责如何把页面展示给用户(HTML) ​ V:视图层( ...

  4. 【http】四种常见的 POST 提交数据方式

    来源:http://www.cnblogs.com/aaronjs/p/4165049.html HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT ...

  5. MVC中处理表单提交的方式(使用html扩展方法+juqery插件)

    这里使用扩展方法来扩展基于jquery.form 插件,实现基于异步的ajax的提交方式.

  6. 四种常见的 POST 提交数据方式

    HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端提交数据,本文 ...

  7. ASP.NET MVC 网站开发总结(五)——Ajax异步提交表单之检查验证码

    首先提出一个问题:在做网站开发的时候,用到了验证码来防止恶意提交表单,那么要如何实现当验证码错误时,只是刷新一下验证码,而其它填写的信息不改变? 先说一下为什么有这个需求:以提交注册信息页面为例,一般 ...

  8. Web 四种常见的POST提交数据方式

    HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端提交数据,本文 ...

  9. (转)四种常见的 POST 提交数据方式

    四种常见的 POST 提交数据方式(转自:https://imququ.com/post/four-ways-to-post-data-in-http.html) HTTP/1.1 协议规定的 HTT ...

随机推荐

  1. 【WebMisCentral WMC】基于Extjs 4.2x的企业级用户授权认证中心系统(SSO+AM+SM),多租户SAAS应用

    http://saas.chinacloudtech.com 题记 三年磨一剑,在企业信息化的道路上已经走了3年之久了,3年多时间里做了很多,突破了很多:有无奈和辛酸,也有收货与喜悦:自我价值也在不断 ...

  2. HTML Hyperlink between and within pages

    In HTML, we can use tag <a href=""> to create hyperlinks between and within pages. T ...

  3. android多国语言文件夹文件汇总

    android多国语言文件夹文件汇总如下: 中文(中国):values-zh-rCN 中文(台湾):values-zh-rTW 中文(香港):values-zh-rHK 英语(美国):values-e ...

  4. Java WebService 简单实例[转]

    http://www.cnblogs.com/yisheng163/p/4524808.html?utm_source=tuicool 前言:朋友们开始以下教程前,请先看第五大点的注意事项,以避免不必 ...

  5. [Z] Windows 8/10 audio编程

    都是些网上搜到的比较不错的文章.关于这块儿的内容网上帖子不多.出去下面列的最主要的还有参考MSDN. WASAPI使用介绍: https://blogs.windows.com/buildingapp ...

  6. lxde桌面默认快捷键

    ctrl+alt+左右      选择左右桌面shift+alt+左右     当前窗口送至左右桌面房子键+F1~F4       切换桌面1-4房子键+d           显示桌面alt+esc ...

  7. mssql表名列名对应语句

    if exists (select * from tempdb..sysobjects where name like '#magic%') drop table #magic go select a ...

  8. MSIL 教程(三):类和异常处理(转)

    转自:http://www.cnblogs.com/Yahong111/archive/2007/08/16/857771.html 续上文[翻译]MSIL 教程(二):数组.分支.循环.使用不安全代 ...

  9. VMware的使用

    1.问题的提出   现在所有的组装台式机,均以64位操作系统作为平台   而且USB接口均以USB3.0默认   windows7 64位和windows 10 64位是主流   那么建立在windo ...

  10. spring框架面试相关问题

    Spring 框架中核心组件有三个:Core.Context 和 Beans.其中最核心的组件就是Beans, Spring提供的最核心的功能就是Bean Factory. Spring 解决了的最核 ...