返回首页

什么是Ajax?
AJAX技术,为{A}的缩写。使用XMLHTTP对象
XMLHTTP对象可以创建这样的:

<script language="javascript">

  //Global XMLHTTP Request object

var XmlHttp;



//Creating and setting the instance of appropriate XMLHTTP Request object to 

//a "XmlHttp" variable  

function CreateXmlHttp()

{

 //Creating object of XMLHTTP in IE

 try

 {

  XmlHttp = new ActiveXObject("Msxml2.XMLHTTP");

 }

 catch(e)

 {

  try

  {

   XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

  } 

  catch(oc)

  {

   XmlHttp = null;

  }

 }

 //Creating object of XMLHTTP in Mozilla and Safari 

 if(!XmlHttp && typeof XMLHttpRequest != "undefined") 

 {

  XmlHttp = new XMLHttpRequest();

 }

}

</script>
将请求发送给服务器端页面
我们可以发送一个请求到服务器页面通过XMLHTTP对象从服务器检索数据。
上面的代码说明如何sendnbsp; webpage2.aspx与请求的对象集合的请求。这个集合包含选定的国家本身。处理客户端请求
是在服务器端收到请求时,服务器的页面执行代码,并给出通过XMLHTTP对象的反应:
Dim xList As XmlNodeList

Dim xNode As XmlNode

Dim Str As String

xmlDoc.Load(Server.MapPath("CountriesAndStates.xml"))



Dim Country As String = Request.QueryString("SelectedCountry")

Dim query As String = ("/countries/country[@name='" & country & "']")

xlist = xmlDoc.SelectNodes(query)



Response.Clear()

 

For Each xNode In xList

     If xNode.HasChildNodes = True Then

          For Each xN As XmlNode In xNode.ChildNodes

               Str &= xN.InnerText & "-"

          Next

     End If

Next



Response.Clear()

Response.ContentType = "text/xml"

Response.Write(str)

Response.End()
使用XmlHttp对象来检索数据
接收来自服务器的页面的响应,可以做这样的:
XMLHttpRequest的就绪状态的有效名单下表中列出:
值 0
未初始化
1
载入
2
加载
3
互动
4
填写
thenbsp状态代码清单; HTTP状态如下:1XX信息
收到的请求,持续不断的过程。100:继续101:交换协议2XX成功
的行动是成功接收,理解,并接受。200:确定201:创建202:接受203:非授权信息204:没有内容205:重置内容 206:部分内容207:多状态3xx的重定向
客户端必须采取更多的行动来完成请求。300:多选题301:永久移动。这和今后所有申请应直接到另一个URI。302:发现这个最流行的重定向代码,但也矛盾的工业标准的做法的一个例子。 HTTP/1.0规范(RFC 1945)所需的客户端执行anbsp的;临时重定向(原描述语是"暂时移动"),但流行的浏览器实施303参见其它。因此,HTTP/1.1的状态代码303和307两种行为之间的歧义。但是,大多数Web应用程序和框架仍然使用302状态码,如果它是303。303:参见其它(HTTP/1.1)。下,可以找到另一个使用GET方法的URI请求的响应。304:不修改305:使用代理(HTTP/1.1)。许多HTTP客户端(如Mozilla和Internet Explorer)不正确地处理这个状态代码的响应。306不再使用,但保留。用于"交换机代理"。307:临时重定向(HTTP/1.1)。在此之际,应反复要求与另一个URI,但将来的请求仍然可以向原始URI。 303,原岗位要求必须重复与另一个POST请求。4XX客户端错误
请求包含语法错误或无法实现。 400:错误的请求401:未经授权。到403/Forbidden类似,但具体使用时,身份验证是可行的,但失败或尚未提供。请参阅基本的认证方案和消化接入认证。402:付款所需。原意是,这段代码可能会被视为某种形式的数字现金/小额计划的一部分,但还没有发生过,从未使用过此代码。403:故宫404:未找到405:不允许的方法406:不接受407:需要代理身份验证408:请求超时409:冲突410:飘411:所需长度412:前提条件失败413:请求实体过大414:请求URI太长415:不支持的媒体类型416:请求的范围无法满足417:预期失败449:与Microsoft扩展重试:重审请求后,应做适当的行动。5XX服务器错误
服务器未能完成显然有效的请求。500:内部服务器错误501:未实现502:错误的网关503:服务不可用504:网关超时505:HTTP版本不受支持509:带宽限制超标。此状态代码,而由多台服务器使用,是不是一个官方的HTTP状态代码。
if(XmlHttp.readyState == 4)

 {

  // To make sure valid response is received from the server, 

  // 200 means response received is OK

  if(XmlHttp.status == 200)

  {  

   ClearAndSetStateListItems(XmlHttp.responseText);

  }

  else

  {

   alert("There was a problem retrieving data from the server." );

  }

 }

有两种类型rectrieving响应XMLHTTP响应。的responseText responseXML的显示dropdownbox状态
的responseText是分割使用split函数和响应被分配到一个数组。
然后,thenbsp;数组值在下拉列表中添加。
var stateList = document.getElementById("stateList");

 //Clears the state combo box contents.

 for (var count = stateList.options.length-1; count >-1; count--)

 {

  stateList.options[count] = null;

 }



 var stateNodes = countryNode.split("-");

 //window.alert(stateNodes) 

 var textValue; 

 var optionItem;

 //Add new states list to the state combo box.

 for (var count = 0; count < stateNodes.length; count++)

 {

     textValue = (stateNodes[count]);

  optionItem = new Option( textValue, textValue,  false, false);

  //window.alert(textValue); 

  //stateList.appendChild(textValue); 

  stateList.options[stateList.length] = optionItem;

 }

这是我的第一篇文章的代码项目。| sathesh_pandian

回答

评论会员:游客 时间:2011/12/07
我需要一个母版页的解决方案...它可能添加母版页?同时加入母版页不能正常工作,为什么
?sathesh_pandian
评论会员:游客 时间:2011/12/07
您好,只有前引进的母版页,我已经提供了这个原始的AJAX。但我们可以通过UpdatePanel中实现同样也如果你想使用原始的Ajax,那么请为我提供的HTML代码,使我能够给你的解决方案。请检查元素的ID是正确的,因为当您使用母版页,内容页元素的ID将得到改变。多数民众赞成的唯一原因,为什么它不工作。最佳SatheshPandian
sathesh_pandian
评论会员:游客 时间:2011/12/07
正常的代码选择使用id元素是的document.getElementById('elementID");这个元素是一个HTML元素。同样将适用,如果该元素是甚至服务器的控制,但不是一个复杂的控制。复杂的控制像DataGrid,面板等如果你把它的任何控件,控件的ID将改变。对于这一点,你必须使用的ClientID。,的document.getElementById("%Element.ClientID");此元素应该是一个服务器控件。最佳SatheshPandian
sathiyarajg
评论会员:游客 时间:2011/12/07
您好,我是在asp.net新..我想知道是否有任何可能的Ajax在asp.netVisualStudio2005中的文本框,组合框livevalidation...答应大力赞赏!!...{BR}
sathesh_pandian
评论会员:游客 时间:2011/12/07
您好您可以验证使用验证控件,这些控件,但功能应该在一个整洁的流您不需要使用这个核心AJAX。如果他们已经放置在工具箱中,可以使用UpdatePanel和脚本管理器在VisualStudio工具箱请参阅imgsrc=http://www.orcode.com/upimg/2011_12_07_07_54_03_2.gif最佳SatheshPandian
ramnamsatya
评论会员:游客 时间:2011/12/07
您好Sathesh!我发现你的例子非常丰富。但仍然存在一个问题。我几乎知道VB指令和语法无关。我在C#中的熟悉。这将大大受益,如果你请我提供了各自的C#版本WebForm2.aspx.vb和WebForm1.aspx.vb中的网页从您的应用程序的服务器端译码。有几件事情,我处于亏损状态时。对于如。例如,当试图在C#中,编译器将提示错误错过这将需要使用喜欢的XmlNodeList类(在您的样品用于声明变量xlist)等的一些指令/集会 也有一些其他的事情,我想与你商量。例如。其中参数"countryNode"来自ClearandSetStateListItems()方法。还有更多的。在旁页中的代码,你使用的变量的xmlDoc,但事先未声明的任何地方。请解释。 总而言之,虽然样品是相当不错的,我已经不能够将它应用到我完全满意。请提供相应的C#编码这个例子的版本尽快与我。邮件ID---sw6boy@yahoo.co.in。谢谢
balajivarnan
评论会员:游客 时间:2011/12/07
我是新来asp.net。我用UR样本..其做工精细...当提交我的城市价值是空的..我想插入到DB的城市价值......u能帮助我......
sathesh_pandian: |您好balajivarnan,

尝试我的代码,我赞赏你的努力。

虽然renderering的HTML代码,服务器会记下来,ViewState和修复页面本身。

但是,当我们使用AJAX,我们不改变的ViewState信息。所以服务器不会得到改变的值

对于这一点,你必须使用一些隐藏的价值,以检索选定的城市。

新增功能和每次当选定的城市得到改变,这个函数应该被称为
LT;选择ID ="stateList"的风格="Z指数:102;左:368px;位置:绝对; TOP:128px"的onchange ="CityOnchange ();"> LT /选择> LT;输入ID ="selectedCity "类型="隐藏"runat ="服务器"价值的="0"/>

city​​onchange funtion

你必须设置选定statevalue
VAR selectedCity = document.getElementsById('selectedCity")
VAR stateList =("stateList");
/ /从状态组合框的选中状态。
VAR selectedState = stateList.options [stateList.selectedIndex]值;

selectedCity.value = selectedState;

此代码会帮助你。

请给予适当的和有意义的名称的元素。

最佳

Sathesh Pandian
评论会员:balajivarnan 时间:2011/12/07
感谢您的答复。我用隐藏的TextBox通过value.It的做工精细...

我在IE和Mozilla检查你的代码正常工作... ...但在谷歌Chrome城市没有得到加载... ...是否有任何解决方案...

我要检查所有的浏览器我的代码..请尽量帮助我尽快...
评论会员:balajivarnan 时间:2011/12/07
我找到了解决办法..而不是我用的onchange下拉它的工作状态的onblur在IE,Mozilla和Chrome浏览器的罚款...
评论会员:sathesh_pandian 时间:2011/12/07
更新。

最佳

Sathesh Pandian
评论会员:GilesHinton 时间:2011/12/07
我在这里恐怕有几个公开可用的图书馆存在的发送和响应的例子比XML更有效地处理

使用尝试赶上工作的运输对象是在JS是一个做事的懒惰和低效的方式 - 而不是你可以检查,如果对象为null,或它的类型是不确定的 - 这两者都远远超过了使用错误处理,以有效达到同样的

此外,你应该知道ASP.Net AJAX现在使用JSON响应来检索其数据 - 纯粹是因为它需要的带宽更少,因此,如果你发回一个项目的大名单,JSON是可能要远远压缩比XML将。

您还错过了其他版本的IE浏览器的XML解析器,XSLT和XML DOM操作提供更大的功能,支持它们的浏览器。

最后,ASP.Net工具包,虽然没有在世界的编程最大的一块,由于其对编码的性质和错误提供了一种机制,不仅填充下拉菜单,但也级联下拉菜单和免费是建立在服务器方

我建议程序员不熟悉JavaScript(即只复制和粘贴其他民族的代码)应该使用这个优先这一解决方案。
评论会员:sathesh_pandian 时间:2011/12/07
感谢您的评论。本文提交了3年时间,controltoolkits before.At不出名的和熟悉的。

最佳

Sathesh Pandian
评论会员:SwapnilSalunke 时间:2011/12/07
您好,我想一个示例应用程序使用AJAX你指导。我想添加更多的像你在一个城市名单。但我得到了一些错误,下面的事情我已经试过。

1。城市在XML文件一样中添加
马哈拉施特拉邦
孟买
普纳并增加更多的功能statechanged但对我来说,事情并没有workign。
如果你能帮助我,请
评论会员:SwapnilSalunke 时间:2011/12/07
您好{S0}

我做了它,但如果可能的话你后你认为会更精细。

感谢问候
Swapnil {S0}
评论会员:sathesh_pandian 时间:2011/12/07
您好,

你可以只是简单地解释你已作出的错误代码的变化呢?
然后只有我能理解的问题是什么?

最佳

Sathesh Pandian
评论会员:mkumar 时间:2011/12/07
喜sathees,

我用UR样本。这是对我很有帮助。我尝试在C#语言的同一样品。但它显示一些错误

"System.Web.HttpRequest.QueryString"是一种"财产",但像一个'法'

错误行 - 弦乐国家的Request.QueryString("SelectedCountry");

如何纠正这种错误。

回复我的邮件mk10183@yahoo.co.in

感谢



库马尔。{​​BR}{S2}

这允许您设置您的喜好讨论板
评论会员:sathesh_pandian 时间:2011/12/07
您好,
您尝试转换成C#vb文件。
弦乐国家= ["SelectedCountry"];是正确的代码。

最佳

Sathesh Pandian
评论会员:madhan_genn 时间:2011/12/07
母版页的cs文件中的zip文件夹
失踪
的问候,
MadhanMohan
评论会员:sathesh_pandian 时间:2011/12/07
您好,

忘掉THT zip文件中。有关母版页

它不会需要运行的应用程序。

如果它给错误的,只是从解决方案中删除该文件。

最佳

Sathesh Pandian
评论会员:J5121982 时间:2011/12/07
当我首次访问服务器,从服务器检索的输出

当我第二次访问服务器时,它不会从服务器中检索输出,它显示了我前面的输出

删除的cookie,离线文件后,等

它从服务器中检索的输出
为什么????{ S4}
提前感谢所有Ajax开发人员

JAYARAJ
评论会员:sathesh_pandian 时间:2011/12/07
清除缓存

它使从缓存输出。{BR​​}
使用此
Response.Expires = 0;Response.Cache.SetNoStore()
Response.AppendHeader("杂注","无缓存");

它会奏效。

最佳

Sathesh Pandian
评论会员:sathesh_pandian 时间:2011/12/07
您好,

对于这一点,检查dropdownbox是为每一个请求和响应的空。

最佳

Sathesh Pandian
评论会员:游客 时间:2011/12/07
ParthasarathyMandayam
我下载的源代码,但它缺少的几个文件。

VB6的认证,SQL 7和ASP开发
评论会员:sathesh_pandian 时间:2011/12/07
我已经提供了以往任何时候都需要在zip文件中的所有文件

因此,尝试再次下载。

它会奏效。

最佳

Sathesh Pandian