java ajax from post_[Java教程]ajax post提交的方式

[Java教程]ajax post提交的方式

0 2015-10-16 16:00:02

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");

本文网址:http://www.shaoqun.com/a/149272.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

ajax

0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值