- 浏览: 707613 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (272)
- Struts1.x (7)
- 事务 (2)
- Hibernate (11)
- 数据库 (14)
- JavaScript&Ajax (43)
- JSP&Servlet (2)
- Flex (1)
- 其它 (9)
- Java (22)
- 框架集成 (1)
- WebService (3)
- Tomcat (3)
- 加密和安全登录 (13)
- 基于原型的JavaScript (0)
- JavaDoc和Java编码规范 (3)
- CAS (1)
- 加密 (1)
- Axis2 (10)
- Ext2.x (3)
- SSH整合 (2)
- Ext (0)
- 正则表达式 (1)
- 设计模式 (4)
- 对象序列化技术 (3)
- CVS (2)
- Struts2 (6)
- Spring 2.x (7)
- Spring Security (2)
- Java 课程 (20)
- 程序员之死 (1)
- 软件测试 (6)
- UML (5)
- NetBeans (1)
- cxf (1)
- JMS (13)
- 设计 (5)
- ibatis2.x (3)
- Oracle (1)
- WebSphere (7)
- 概要设计 (1)
- DB2 (10)
- PowerDesigner (0)
- 软件工程 (5)
- rose (1)
- EA (1)
- LDAP (7)
- Portal&Portlet (3)
- MQ (10)
- ESB (4)
- EJB (2)
- JBoss (2)
最新评论
-
typeRos:
只有配置文件,没有代码么大神
Spring实现IBMMQ的JMS消息发布/订阅模式 -
panamera:
如果ActiveMQ服务器没有启动,这个时候消息生产者使用Jm ...
Spring JMSTemplate 与 JMS 原生API比较 -
lian819:
顶1楼, 引用文件, 配置属性, 太方便了
EXTJS 同步和异步请求 -
wilhard:
说得清楚明白
<%@ include file=""%>与<jsp:include page=""/>区别 -
刘琛颖:
总结的很好。受益了
javascript 父窗口(父页面)— 子窗口 (子页面)互相调用的方法
众所周知XMLHttpRequest的open()方法里的第一个参数是用来设置向服务器提交的方式,这是绝对的吗?不一定哦,看看下面的代码。
代码片断如下:
function simpleStrSubmit()
{
var xmlReqFile = createXMLReqFile();
xmlHttp.open("GET","ProcessServlet",true);//指定GET方式提交
xmlHttp.onreadystatechange = processRequest;//回调函数
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send("xml="+xmlReqFile);
}
描述:其中ProcessServlet是一个Servlet
问题:open方法的第一个参数不论写"GET"或是"POST",在ProcessServlet里都是调用的doPost方法??这是为什么?为什么不调用doGet方法???
答案:按照哪种方式提交不是由open()方法的第一个参数完全决定的,还与send()方法有关。
一、当open()方法里指定的是GET,并且
1、send()方法的参数是""或者null,跟踪代码可以知道调用了Servlet中的doGet方法
2、send()方法的参数是地址重写的方式,或者就是一个字符串,都调用doPost方法,例如:
xmlHttp.open("GET",
"ProcessServlet?choose="+document.getElementById("choosejsfile").value,
true);//open里调用GET方法。
xmlHttp.send("aaa=dd"); //a
xmlHttp.send("paramTest"); //b
xmlHttp.send(" "); //c
xmlHttp.send(null); //d
xmlHttp.send(""); //e
对于a、b、c、d、e五中send()函数,只有d和e会调用doGet方法,a、b、c三种方式均调用 doPost方法。
二、当open()方法里指定的是POST,则对于以上5种send()函数,服务器均会调用doPost方法。
所以使用哪种方式提交是由open方法和send方法共同决定的。
评论
http://www.mofun.cc
因为我是初学,只会用穷举法列出所有的可能性 ,然后强记所有情况的结果
而你给我详细讲解了发生美中结果的原理,真是太感谢了,以后还要向你学习啊!
<div class='quote_div'>
<p> 众所周知XMLHttpRequest的open()方法里的第一个参数是用来设置向服务器提交的方式,这是绝对的吗?不一定哦,看看下面的代码。<br/>代码片断如下: <br/>function simpleStrSubmit() <br/>{ <br/>var xmlReqFile = createXMLReqFile(); <br/><span style='color: #ff0000;'>xmlHttp.open("GET","ProcessServlet",true);//指定GET方式提交</span> <br/>xmlHttp.onreadystatechange = processRequest;//回调函数 <br/>xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); <br/>xmlHttp.send("xml="+xmlReqFile); <br/>} <br/><br/>描述:其中ProcessServlet是一个Servlet<br/>问题:open方法的第一个参数不论写"GET"或是"POST",在ProcessServlet里都是调用的doPost方法??这是为什么?为什么不调用doGet方法???<br/><strong/>答案:按照哪种方式提交不是由open()方法的第一个参数完全决定的,还与send()方法有关。<br/> 一、当open()方法里指定的是GET,并且<br/> 1、send()方法的参数是""或者null,跟踪代码可以知道调用了Servlet中的doGet方法<br/> 2、send()方法的参数是地址重写的方式,或者就是一个字符串,都调用doPost方法,例如:<br/> xmlHttp.open("GET",<br/> "ProcessServlet?choose="+document.getElementById("choosejsfile").value,<br/> true);//open里调用GET方法。<br/> xmlHttp.send("aaa=dd"); //a<br/> xmlHttp.send("paramTest"); //b<br/> xmlHttp.send(" "); //c<br/> xmlHttp.send(null); //d<br/> xmlHttp.send(""); //e<br/> 对于a、b、c、d、e五中send()函数,只有d和e会调用doGet方法,a、b、c三种方式均调用 doPost方法。<br/> 二、当open()方法里指定的是POST,则对于以上5种send()函数,服务器均会调用doPost方法。<br/>所以使用哪种方式提交是由open方法和send方法共同决定的。</p>
</div>
<p><br/>这个问题其实是http请求的报文格式的问题 </p>
<p> </p>
<p>1、如果用GET,是没有报文体的,只有头部,数据应该在GET url?xxxxxxx </p>
<p>报头的末尾是两个CRLF,即GET的情况下,出来url本身是不能直接send数据的。</p>
<p>("url?参数"的大小限制是2048B),即GET的使用范围是小数据量的文本数据。 </p>
<p> </p>
<p>2、如果是POST,则可以把要POST的数据加到两个CRLF后。</p>
<p>此时常见有两种格式:</p>
<p>(1)、application/x-www-form-urlencoded </p>
<p>这个是把数据的name和value按照a=1&b=2的格式拼接成一个串,然后放在报文体中的。一般只能传递字符型数据。</p>
<p>(2)、multipart/form-data 使用一个特殊的【42位(我忘了,大概是)长的以10几个-开头和一组随机16进制数字+表示浏览器相关的数字表示】的分隔符,来分割报文体中的各个数据段,一般是name,然后两个CRLF,接着是二进制数据。服务器端上传组件就是直接按照这种方式来分割出数据和文件的。</p>
<p>考虑到这些情况就可以方便的模拟表单了。 </p>
<p> </p>
<p>(个人看法)综上,只有是POST方法时,才能传递URL+参数外的数据,XHR明显是考虑到了这一点。当send的数据存在时,自动使用POST。</p>
发表评论
-
JavaScript 代码压缩工具
2011-02-16 15:15 945见附件,免费工具。 -
在服务器端判断request来自Ajax请求(异步)还是传统请求(同步)
2009-11-26 13:38 10714在服务器端判断request来自Ajax请求(异步)还是传 ... -
转:用Javascript来关闭IE浏览器和FireFox浏览器
2009-06-03 11:08 2181原文地址:http://hi.baidu.com/suen ... -
JavaScript 解析 JSON
2009-02-25 20:36 0JSON (JavaScript Object Not ... -
JavaScript的四舍五入运算
2009-02-02 13:49 1786function ForDight(Dight,How) { ... -
JavaScript 使用面向对象的技术创建高级 Web 应用程序
2009-01-19 21:44 1516转载: JavaScript 使用面 ... -
在JavaScript中使用面向对象
2009-01-18 17:05 1129原文地址:http://www.cnblo ... -
应当这样编写 JavaScript 代码吗?
2009-01-17 23:09 1127应当这样编写 JavaScript 代码吗? 您已经看到Ja ... -
JavaScript模拟命名空间
2009-01-17 17:35 1332JavaScript模拟命名空间 在C++和C#中,命名 ... -
JavaScript 从类继承
2009-01-17 17:32 1279从类继承 到这里,我们已经了解了构造函数和原型对象如何使您在 ... -
模拟私有属性
2009-01-07 15:46 1134模拟私有属性 现在介绍闭包如何帮助模拟私有成员。正常情况 ... -
闭 包
2009-01-07 15:10 1242闭包 我没有自觉地学习过JavaScript。我必须快点了解 ... -
静态属性和方法
2009-01-05 18:15 1316静态属性和方法 有时,您需要绑定到类而不是实例的属性或方法, ... -
原 型
2009-01-05 17:58 1066原型 在使用JavaScript的面向对象编程中,原型对象 ... -
构造函数而不是类
2009-01-04 23:15 1398构造函数而不是类 前面提到过,有关JavaScript ... -
JavaScript 函数是最棒的
2009-01-04 19:25 1473JavaScript 函数是最棒的 在很多编程语言中,函数和 ... -
insertAdjacentElement方法
2008-12-29 18:08 2473语法: oElement = object . inse ... -
javascript 中定义private 方法
2008-12-26 12:40 2301出处:http://aoqi1883.blog.163.co ... -
event.returnValue和return false的区别
2008-12-25 19:52 26619<!DOCTYPE html PUBLIC " ... -
按“回车”键提交表单
2008-12-25 19:17 2565<!DOCTYPE html PUBLIC " ...
相关推荐
初始化请求是通过`open()`方法实现的,它接受三个参数:请求类型(如"GET"或"POST"),URL,以及一个布尔值表示是否异步执行。 ```javascript xhr.open('GET', 'http://example.com/data', true); ``` **二、设置...
XMLHttpRequest(XHR)是Web开发中的一个核心组件,它允许JavaScript在不刷新整个页面的情况下与服务器进行异步数据交换,这种技术通常被称为Ajax(Asynchronous JavaScript and XML)。XMLHttpRequest对象提供了一...
这个.chm文件很可能是关于XMLHTTPRequest的一个详细参考手册,涵盖了与Ajax(Asynchronous JavaScript and XML)技术相关的各种概念、方法、属性和示例。 XMLHTTPRequest是JavaScript中的一个内置对象,它允许网页...
这篇博客"js 混合提交方式(含有get和post)"可能探讨了如何在一个应用中同时使用这两种方法来实现更灵活的数据交互。以下是对这些概念的详细解释: **GET方法** GET方法是最常见的HTTP请求类型,它用于从服务器...
在JavaScript中,我们可以通过以下方式创建一个XMLHttpRequest实例: ```javascript var xhr = new XMLHttpRequest(); ``` 接下来,我们需要设置HTTP请求的方法、URL和是否异步执行。通常,我们使用`open()`方法来...
在IT行业中,HTTP协议是网络通信的基础,而GET和POST是HTTP协议中...在VB中,我们可以使用XMLHttpRequest对象轻松实现GET和POST请求,从而与服务器进行数据交互。遇到DLL丢失问题时,应及时查找并安装缺失的库或组件。
在执行请求之前,需要使用`open()`方法设置请求的基本参数,如请求类型(GET、POST等)、请求的URL以及是否为异步请求。 #### 三、XMLHttpRequest对象的关键属性 - **`readyState`**:表示当前请求的状态,是一个...
2. **配置请求**:使用`open`方法设置请求的方式(GET)、URL以及是否异步处理。 3. **发送请求**:调用`send`方法发送GET请求。 4. **处理响应**:通过`onreadystatechange`事件监听器处理服务器返回的数据。 ####...
这段代码创建了一个新的XMLHttpRequest对象,设置了它的`onreadystatechange`监听器,并使用`open()`和`send()`方法发送了一个GET请求到指定的URL。当请求完成并返回200状态码时,会打印出响应文本。 #### 五、总结...
XmlHttpRequest.open("GET",url,true); XmlHttpRequest.onreadystatechange=function(){ if(XmlHttpRequest.readyState==4){ if(XmlHttpRequest.status==200){ var result=XmlHttpRequest.responseText; if...
但是需要注意的是,POST请求可能引发服务器状态的变化,所以在处理用户提交表单等操作时更为常用。 ### GET与POST的选择依据 选择GET还是POST主要取决于以下几个方面: 1. **安全性**:如果数据包含敏感信息,应...
本压缩包文件"创建XMLHttpRequest对象的方法.rar"包含了一份关于如何创建XMLHttpRequest对象的详细教程,其核心内容可以从以下几个方面来理解: 1. **XMLHttpRequest对象的创建** 在JavaScript中,XMLHttpRequest...
通过创建XMLHttpRequest对象,然后调用其open()方法设置请求类型(GET或POST)、URL和是否异步处理,接着使用send()方法发送请求。 2. **实例解析** - `xmlhttprequest2.html` 和 `xmlhttprequest3.html` 可能展示...
1. **初始化请求**:通过`open()`方法设置请求类型(GET、POST等)、URL以及是否异步执行。 2. **设置请求头**:如果需要,可以通过`setRequestHeader()`方法设置HTTP头信息。 3. **发送请求**:调用`send()`方法...
在Ajax中,主要使用的请求方式有两种:GET和POST。 **GET请求** GET是HTTP协议中最常见的请求方法之一,主要用于获取服务器上的资源。在Ajax中,使用GET请求时,请求的数据会被附加到URL后面,以问号分隔,形成一个...
1. `open()`: 初始化请求,接受三个参数:请求类型(GET、POST等)、URL和是否异步。 2. `send()`: 发送请求,GET请求时通常不传参数,POST请求时传入数据。 3. `abort()`: 取消当前请求。 4. `readyState`: 表示...
常用的有get post url:请求服务器的地址。 isAnsy:是否是异步,不写该参数默认是异步 true。 2.send(var data):没有返回值 作用:向服务器发送请求 参数:data.请求正文,请求数据。 事件处理器:指向一个...
1. **提交方式**:根据不同的提交方式(GET或POST),服务器端会分别调用对应的处理方法(`doGet`或`doPost`)来处理请求。 2. **Content-Type**:在使用POST方法时,必须正确设置`Content-Type`头信息,否则服务器...
在AJAX中,我们可以通过设置`XMLHttpRequest`的`send`方法参数或`fetch`的`body`选项来传递数据: ```javascript // 使用XMLHttpRequest var xhr = new XMLHttpRequest(); xhr.open('POST', '...
接着,调用open()方法指定请求类型(GET或POST),URL以及是否异步执行。最后,使用send()方法发送请求,对于GET请求,可以为空;对于POST请求,需传入数据。 直接访问Web服务通常涉及发送GET或POST请求到指定的URL...