【分享+散分】ajax指定为post但是未设置content-type时如何获取提交的内容

斯洛文尼亚旅游 2010-03-02 10:45:49
加精
文章来源:http://www.coding123.net/blogdetail1768.html

  今天在CSDN看到一个ajax指定了提交方式为post,但是设置了content-type为text/plain的时,如何在提交的页面获取提交值的问题。由于content-type为text/plain,动态页并未帮你处理成键值对的形式,所以你得自己使用2进制流数据生成对应的string类型的数据。

希望对有需要的朋友有帮助。

  1)要生成键值对形式,你得指定content-type为“application/x-www-url-encoded”
xhr.open("post","动态页",true);
xhr.setRequestHeader("content-type","application/x-www-url-encoded");//注意要在open后才能调用setRequestHeader



  这样就可以在动态页使用下面的代码来获取对应的键值。
string v=Request.Form["键"];




  

2)在发送数据时未指定键,则可以使用Request.Form.ToString()获取提交的内容
xhr.open("post","test.aspx",true);
xhr.setRequestHeader("content-type","application/x-www-url-encoded");
xhr.send("123456789");



string v=Request.Form.ToString();//得到123456789






3)未设置content-type或者content-type设置成非application/x-www-url-encoded,则需要读取2进制流数据
xhr.open("post","test.aspx",true);
xhr.send("123456789");


if (Request.InputStream.Length > 0){
System.IO.StreamReader reader
= new System.IO.StreamReader(Request.InputStream);//注意如果必要时可以指定编码值,防止出现乱码
string v=reader.ReadToEnd();//值为123456789
reader.Close();
}


 

 4)对于xhr提交方式为post,链接在url后的参数都可以使用Request.QueryString["键"]来获取
xhr.open("post","test.aspx?m=MM",true);
xhr.setRequestHeader("content-type","application/x-www-url-encoded");
xhr.send("123456789");


string v=Request.Form.ToString();//得到123456789
string m=Request.QueryString["m"];//得到MM






  综合测试例子test.aspx
<%@ Page language="C#" ValidateRequest="false"%>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
System.Xml.XmlDocument doc = null;
if (Request.InputStream.Length > 0)//非 application/x-www-form-urlencoded类型
{
System.IO.StreamReader reader = new System.IO.StreamReader(Request.InputStream);
doc = new System.Xml.XmlDocument();
doc.LoadXml(reader.ReadToEnd());
reader.Close();
}

if (Request.Form.Count > 0)// application/x-www-form-urlencoded类型
{
doc = new System.Xml.XmlDocument();
doc.LoadXml(Server.UrlDecode(Request.Form.ToString()));
}
if (doc != null)
{
Response.Write(doc.GetElementsByTagName("item")[0].InnerText + "\n" + Request.QueryString["m"]);
Response.End();
}
}
</script>
<script type="text/javascript">
var xhr=new ActiveXObject("microsoft.xmlhttp");
xhr.open("post","alexa.aspx?m=MM",true)
//xhr.setRequestHeader("Content-Type", "text/plain");
//xhr.setRequestHeader("content-type","application/x-www-form-urlencoded")
xhr.send("<root><item>1</item></root>");
xhr.onreadystatechange=function(){
if(xhr.readyState==4)alert(xhr.responseText)
}
</script>


  



更多ajax问题请参考,ajax问题总结
...全文
4304 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
~~~~~~~~~~~up~~~~~~~~~~
hailang7210 2010-03-03
  • 打赏
  • 举报
回复
地对地导弹地对地导弹的点对点地对地导弹
cs5276 2010-03-02
  • 打赏
  • 举报
回复
学习 + 收藏,谢谢分享
ws_hgo 2010-03-02
  • 打赏
  • 举报
回复
学习
Thanks!!
阿非 2010-03-02
  • 打赏
  • 举报
回复
温故而知新,up~
asdujiayong 2010-03-02
  • 打赏
  • 举报
回复
抢座位先
标题基于SpringBoot的马术俱乐部管理系统设计与实现AI更换标题第1章引言介绍马术俱乐部管理系统的研究背景、意义、国内外研究现状、论文方法及创新点。1.1研究背景与意义阐述马术俱乐部管理系统对提升俱乐部管理效率的重要性。1.2国内外研究现状分析国内外马术俱乐部管理系统的发展现状及存在的问题。1.3研究方法以及创新点概述本文采用的研究方法,包括SpringBoot框架的应用,以及系统的创新点。第2章相关理论总结和评述与马术俱乐部管理系统相关的现有理论。2.1SpringBoot框架理论介绍SpringBoot框架的基本原理、特点及其在Web开发中的应用。2.2数据库设计理论阐述数据库设计的基本原则、方法以及在管理系统中的应用。2.3马术俱乐部管理理论概述马术俱乐部管理的基本理论,包括会员管理、课程安排等。第3章系统设计详细描述马术俱乐部管理系统的设计方案,包括架构设计、功能模块设计等。3.1系统架构设计给出系统的整体架构,包括前端、后端和数据库的交互方式。3.2功能模块设计详细介绍系统的各个功能模块,如会员管理、课程管理、预约管理等。3.3数据库设计阐述数据库的设计方案,包括表结构、字段设计以及数据关系。第4章系统实现介绍马术俱乐部管理系统的实现过程,包括开发环境、编码实现等。4.1开发环境搭建介绍系统开发所需的环境,包括操作系统、开发工具等。4.2编码实现详细介绍系统各个功能模块的编码实现过程。4.3系统测试与调试阐述系统的测试方法、测试用例以及调试过程。第5章系统应用与分析呈现马术俱乐部管理系统的应用效果,并进行性能分析。5.1系统应用情况介绍系统在马术俱乐部中的实际应用情况。5.2系统性能分析从响应间、并发处理能力等方面对系统性能进行分析。5.3用户反馈与改进收集用户反馈,提出系统改进建议。第6章结论与展望总结马术俱乐部管理系统的设计与实现成果,并展望来的研究

52,788

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧