Ajax中的返回状态readyState和status,原来没有重视过这两者的关系,结果今天写代码时出差错了。我的原代码为:
function requestSome()
{
url=......
xmlHttpRequest.open....
xmlHttpRequest.onreadystatechange = function responseSome();
xmlHttpRequest.send....
}
function responseSome()
{
if(xmlHttpReqeust.readyState == 4)
{
alert(xmlHttpRequest.responseText);
.....
.....
}
}
我需要得到一些合法的返回数据并对之进行处理,但返回结果很离奇,我alert出的结果为:<html><head><title>Apache Tomcat/5.5.26 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif ......
$.ajax({
type: "POST", //访问WebService使用Post方式请求
contentType: "application/json",
url: "UpdateNews.aspx/InsertLocalImages",
data: "{dirName:'" + UploadPath + "',ImagePath:'" + imgpath + "',ImageName:'" + imgname + "',filetitle:'" + title + "',filedate:'" + date + "',fileexp:'" + exp + "',filekeyw:'" + keyw + "',iscovr:'" + iscovr + "'}",
dataType: 'json',
succ ......
$.ajax({
type: "POST", //访问WebService使用Post方式请求
contentType: "application/json",
url: "UpdateNews.aspx/InsertLocalImages",
data: "{dirName:'" + UploadPath + "',ImagePath:'" + imgpath + "',ImageName:'" + imgname + "',filetitle:'" + title + "',filedate:'" + date + "',fileexp:'" + exp + "',filekeyw:'" + keyw + "',iscovr:'" + iscovr + "'}",
dataType: 'json',
succ ......
//初始化对象并发出XMLHttpRequest请求
xmlHttp= false;
if (window.XMLHttpRequest)
{ //Mozilla等其他浏览器
xmlHttp= new XMLHttpRequest();
if (xmlHttp.overrideMimeType)
{
xmlHttp.overrideMimeType("text/xml"); /*如果来自服务器的响应没有 XML mime-type 头部(header),则一些版本的 Mozilla浏览器不能正常运行。对于这种情况,httpRequest.overrideMimeType('text/xml'); 语句将覆盖发送给服务器的头部,强制 text/xml 作为 mime-type。*/
}
}
else if (window.ActiveXObject)
{ //IE浏览器
try
{ //Microsoft 浏览器 Internet Explorer 使用 MSXML 解析器处理 XML
xmlHttp= new ActiveXObject("Msxml2.XMLHTTP"); //尝试使用一个版本的 MSXML 创建对象,如果失败则使用另一个版本创建该对象。
}
catch (e)
{
& ......
jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯。
废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对jQuery.ajax()进行封装以方便我们使用的方法,当然,如果要处理复杂的逻辑,还是需要用到jQuery.ajax()的(这个后面会说到).
1. load( url, [data], [callback] ) :载入远程 HTML 文件代码并插入至 DOM 中。
url (String) : 请求的HTML页的URL地址。
data (Map) : (可选参数) 发送至服务器的 key/value 数据。
callback (Callback) : (可选参数) 请求完成时(不需要是success的)的回调函数。
这个方法默认使用 GET 方式来传递的,如果[data]参数有传递数据进去,就会自动转换为POST方式的。jQuery 1.2 中,可以指定选择符,来筛选载入的 HTML 文档,DOM 中将仅插入筛选出的 HTML 代码。语法形如 "url #some > selector"。
这个方法可以很方便的动态加载一些HTML文件,例如表单。
示例代码:
$(".ajax.load").load("http://www.cnblogs.com/QLeelulu/archive/2008/03/30/1130270.html .post",
function (responseText, textStatus, XMLHttpRequest){
this;//在这� ......
XMLHttpRequest是Ajax技术体系中最为核心的技术。缺少了它,Ajax的其余技术就无法成为一个有机的整体,将会土崩瓦解。
1999年上半年,MS在IE 5.0版中首次支持这种技术,他们是通过一个名为XMLHTTP的ActiveX对象来支持这种技术的。XMLHTTP对象使得页面中的脚本具有了在不刷新页面的情况下直接与服务器通信的能力。在此之前,能够做到这件事的唯一技术是通过IFrame,然而这超越了IFrame最初设计的目标,是一种存在潜在危险的hack做法。既然已经有很多不守规矩的开发者做出了越轨的行为,并且事实证明这样的开发方式确实非常有价值,也不会对系统安全造成什么破坏。于是MS就从善如流地发明了XMLHTTP对象,专门用来为浏览器中的脚本(在IE中就是JScript和VBScript)提供这样的服务器通信能力。
XMLHTTP对象大受欢迎,到了2000年它几乎已经成为了事实上的标准。Mozilla在这一年实现了具有相同接口的原生对象,称作XMLHttpRequest对象。后来Opera、Safari等浏览器也都相继实现了XMLHttpRequest对象。现在XMLHttpRequest是这个技术的正式名称。
Ajax所依赖的技术之中唯一一个尚未正式标准化的部分就是XMLHttpRequest,不过现在W3C已经将其列入了工作草案,应该很快就� ......
1,本例子实现一个Ajax更改数据的例子
如图:
1,新建xml文件;其内容如下:
<?xml version="1.0" encoding="utf-8"?>
<userinfo>
<user>
<id>I</id>
<name>wtq</name>
<password>123456</password>
<phone>0595-85538649</phone>
<city>泉州</city>
</user>
<user>
<id>1</id>
<name>1</name>
<password>1</password>
<phone>1</phone>
<city>1</city>
</user>
<user>
<id>1</id>
<name>1</name>
<password>1</password>
<phone>1</phone>
<city>1</city>
</user>
<user>
<id>123</id>
<name>王天巧</name>
<password>123</password>
<phone>13616009873</phone>
<city>jinjiang</city>
</user>
< ......