xmlhttp.open

知识
王刚老师 2019-07-17 16:47:52

同求,一个事件onclick不刷新就跳转到页面处理。类似 于点赞,
asp文件,自己写了一个,不转
function zan(){
xmlHttp.open("post", "zan.asp?id=122", true);
}

xmlHttp.Open
建一个新的http请求,并指定此请求的方法、URL以及验证信息
语法
oXMLHttpRequest.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword);
参数
bstrMethod
http方法,例如:POST、GET、PUT及PROPFIND。大小写不敏感。 
支持:GET, POST, HEAD, PUT, DELETE, MOVE, PROPFIND, PROPPATCH, MKCOL, COPY, LOCK, UNLOCK, OPTIONS
bstrUrl
请求的URL地址,可以为绝对地址也可以为相对地址。 
varAsync[可选]
布尔型,指定此请求是否为异步方式,默认为true。如果为真,当状态改变时会调用onreadystatechange属性指定的回调函数。 
bstrUser[可选]
如果服务器需要验证,此处指定用户名,如果未指定,当服务器需要验证时,会弹出验证窗口。 
bstrPassword[可选]
验证信息中的密码部分,如果用户名为空,则此值将被忽略。 
Example
下面的例子演示从服务器请求book.xml,并显示其中的book字段。 
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");xmlhttp.open("GET","http://localhost/books.xml", false);xmlhttp.send();var book = xmlhttp.responseXML.selectSingleNode("//book[@id='bk101']");alert(book.xml);
备注
调用此方法后,可以调用send方法向服务器发送数据。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1、概述
2、XMLHttpRequest?的方法和属性
XMLHttpRequest包含了基本的属性和方法,正是通过这些方法和属性实现了对服务器的通讯。Ajax依赖XMLHttpRequest完成与服务器的通信。
XMLHttpRequest的基本方法如下:
Abort():停止发送当前请求。
getAllResponseHeaders():获取服务器返回的全部响应头。
getResponseHeader(“headerLabel”):根据响应头的名字来获取响应头。
Open(“method”,”URL”,…):建立与服务器的连接,并设置请求的方法是否使用异步请求。如果远程服务需要用户名,密码,则提供。
Send(content):发送请求。
setRequestHeader(“label”,”values”):在发送请求之前,先设置请求头。
看代码?2/getAllResponseHeaders
XMLHttpRequest的属性如下:
1、 onreadystatechange:用于指定XMLHttpRequest对象状态改变时的事件处理函数。当XMLHttpRequest的状态放生改变时,该函数将被触发。XMLHttpRequest对象有如下几种状态:
0?:XMLHttpRequest对象还没有完成初始化;
1?:XMLHttpRequest对象开始发送请求;
2?:XMLHttpRequest对象的请求发送完成;
3?:XMLHttpRequest对象开始读取服务器的响应;
4?:XMLHttpRequest对象读取服务器响应结束。
2、 readyState:?XMLHttpRequest对象的处理状态。
3、 responseText:用于获取服务器的响应文本。
4、 responseXML:用于获取服务器响应的XML文档对象。
5、 status:服务器返回的状态码,只有当服务器的响应已经完成时,才会有该状态码。
6、 statusText:服务器返回的状态文本信息,只有当服务器的响应已经完成时,才会有该状态文本信息。
看代码2/readyState反映的就是状态的变化过程。
注意:onreadystatechange属性在IE中可以不区分大小写,但是在非IE浏览器中,将严格区分大小写,只能写成onReadyStateChange的形式。
服务器响应完成后,依然不能直接获取服务器响应。应为服务器响应有多种情况。为了判断服务器响应是否正确,可以通过XMLHttpRequest对象的statue和statusText两个属性将上面HTML页面的回调函数改为如下形式:
function?processResponse(){
if(xmlrequest.readyState?==?4){
alert(xmlrequest.status?+?"\n"
+?xmlrequest.statusText);
}
}
该代码表示:当响应完成时,通过alert输出status和statusText的值。
含义
status:服务器响应的状态码;
statusText:服务器响应的状态提示;
服务器常用的状态码及其对应的含义如下:
200?服务器响应正常。
500?服务器内部错误。
结论:如果想通过JavaScript获取服务器响应,必须先判断服务器响应是否完成。判断服务器的响应是否完成,可以通过判断XMLHttpRequest对象的readyState属性进行。当readyState为4时,响应完成;服务器响应完成后,还应判断服务器响应是否正确。判断服务器响应是否正确,可以通过判断XMLHttpRequest的status是否为200来完成。
3、发送请求
Ajax与传统Web应用的最大区别在于:发送请求的方式。传统web应用采用表单提交或者在请求地址中增加请求参数的方式发送请求,Ajax则采用异步方式在后台发送请求。Ajax请求正是通过XMLHttpRequest对象发送的。
3.1?发送简单请求
发送不带任何参数的请求。通常用于自动刷新的应用。
这种情况下操作步骤如下:
第一步,初始化XMLHttpRequest对象;
第二步,打开与服务器的连接,打开连接时,确定发送请求的方法:采用GET或者POST,以及是否采用异步方式。
第三步,设置XMLHttpRequest状态改变时的事件处理函数。
第四步,发送请求,如采用POST方法发送请求,可以发送带参数的请求,GET方式不可以。
看代码3/simple
程序分析:服务器采用的是JSP。Second.jsp。每连接一次服务器端,都要向客户端返回一个字符串,字符串的格式是由3个随机整数通过$连接而成。
客户端first.html。responseText属性里面存储的是服务器端返回的字符串。
split(String?str)?把指定的字符串按照$符号进行分离,分离后的结果作为一个字符串数组。
JS中的setTimeout(函数,时间)函数:循环调用一个函数。第二个参数表示时间,单位是毫秒,第一个参数是要循环的函数名。
3.2?发送GET请求
看代码3/GET
本程序是涉及到ajax的技术非常简单。但是其中有几个JS语句需要特别注意,很常用。
解释如下:
option?=?document.createElement("option");???
创建元素(标签),元素名取决于传入的字符串
txtNode?=?document.createTextNode(cityList[i]);??
创建文本节点。文本的内容取决于传入的字符串。这里需要特别注意的是两个标签之间的内容我们认为是一个节点,是文本节点。例如:你好啊!?其中的“你好啊!”就看作是两个标签元素之间的一个文本节点。
option.appendChild(txtNode);
向标签元素内添加文本节点。
displaySelect.?appendChild?(option);
根据程序上下文,可以知道displaySelect是一个下拉框的标签元素。appendChild的作用是向下拉框内添加子节点。其中option是要添加的一个opotion子标签。
3.3发送POST请求
POST请求适应性更广,允许发送的参数更多,参数不会被浏览者看到。推荐尽量使用POST而不是GET方法。
发送POST请求的3个步骤:
1?使用open方法打开连接时,指定使用POST方法发送请求。
2?设置正确的请求头,POST请求通常应该设置Content-Type请求头。
3?发送请求,请求参数可以在send方法中确认。
看代码3/POST
程序分析:
发送请求的xmlrequest.open("POST",?uri,?true);语句后面不再跟参数。参数在xmlrequest.send("id="+id);内完成。另,xmlrequest.setRequestHeader("Content-Type"
,?"application/x-www-form-urlencoded");语句不可丢。
注意:如果不带任何参数,send(null)方法不能丢。
3.4发送请求时的编码问题
首先,看代码encoding
该程序得到的结论:
1?尽量不要使用GET方式传递参数给服务器。
2?使用POST方式传递参数的用法。一要注意客户端使用send方法,二要注意服务器端字符集设置采用request.setCharacterEncoding("UTF-8");语句。
3?做到客户端HTML编码与服务器端request.setCharacterEncoding("UTF-8");保持一致。
3.5发送XML请求
对于请求是key-value对的形式传递数据,可以采用POST方式,对于复杂的参数可以考虑使用XML方式传递。
不详细讲解,感兴趣的可以看代码xmlRequest
4、处理服务器响应
4.1?处理的时机
时机:readyState?为4?并且status为200或者304.
4.2使用文本响应
获得服务器响应很简单,通过responseText和responseXML。
responseText:生成普通文本响应。返回服务器响应的字符串。适用于简单的响应。前面例子中已经非常详细的说明用法。不再赘述。
responseXML:生成XML响应。
4.3使用XML响应。
看代码xmlResponse
阅读该代码需要注意的事情
1、 服务器端响应的是完整的XML。
2、 客户端3条核心语句:
var?xmldoc?=?xmlrequest.responseXML;把服务器端响应的全部XML看做一个完整的对象。
var?cityList?=?xmldoc.getElementsByTagName("city");按指定的元素名来获取数组。即:相同元素名的全部元素组成一个数组。
cityList[i].text??获取XML中某个元素内的文本的值用该text属性。

---------------------


#xmlhttp.open#

返回顶部

影响力:5142

xmlhttp.open("GET","note.xml",false);一直打开不了xml文件

这个解答帮助过1734人

1234567891011121314151617181920212223242526272829303132<html><body><h1>W3School.com.cn Internal Note</h1><p><b>To:</b> <span id="to"></span><br /><b>From:</b> <span id="from"></span><br /><b>Message:</b> <span id="message"></span> <script type="text/javascript">if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); }else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }xmlhttp.open("GET","note.xml",false);xmlhttp.send();xmlDoc=xmlhttp.responseXML; document.getElementById("to").innerHTML=xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue; document.getElementById("from").innerHTML=xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue; document.getElementById("message").innerHTML=xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;</script> </body></html>
上面是一个示例。在IE的情况下,这个语句也需要
123xmlhttp.open("GET",xmlFile,false);xmlhttp.send();xmlDom=xmlhttp.responseXML;

编辑时间 2019-10-08 09:21:48
影响力:237

JS与ajax同源策略在项目中怎样使用

这个解答帮助过843人

1、打开与服务器的连接(open)
当得到XMLHttpRequest对象后,就可以调用该对象的open()方法打开与服务器的连接了。open()方法的参数如下:
open(method, url, async):
method:请求方式,通常为GET或POST;
url:请求的服务器地址,例如:/ajaxdemo1/AServlet,若为GET请求,还可以在URL后追加参数;
async:这个参数可以不给,默认值为true,表示异步请求;
var xmlHttp = createXMLHttpRequest();
xmlHttp.open("GET", "/ajax_get/?a=1", true); 
2、发送请求
当使用open打开连接后,就可以调用XMLHttpRequest对象的send()方法发送请求了。send()方法的参数为POST请求参数,即对应HTTP协议的请求体内容,若是GET请求,需要在URL后连接参数。
注意:若没有参数,需要给出null为参数!若不给出null为参数,可能会导致FireFox浏览器不能正常发送请求!
xmlHttp.send(null);
3、接收服务器的响应(5个状态,4个过程)
当请求发送出去后,服务器端就开始执行了,但服务器端的响应还没有接收到。接下来我们来接收服务器的响应。
XMLHttpRequest对象有一个onreadystatechange事件,它会在XMLHttpRequest对象的状态发生变化时被调用。下面介绍一下XMLHttpRequest对象的5种状态:
0:初始化未完成状态,只是创建了XMLHttpRequest对象,还未调用open()方法;
1:请求已开始,open()方法已调用,但还没调用send()方法;
2:请求发送完成状态,send()方法已调用;
3:开始读取服务器响应;
4:读取服务器响应结束。

编辑时间 2019-04-21