我一个朋友在看AJAX基础教程,因那里面的源码是JAVA版本的,所以他在将其中一个示例改成asp.net的时候出现了 status 500的错误.然后问我怎么改,我试了一下,下面贴出这个示例的代码. ,其实是asp.net在提交FORM的时候会检测危险元素....
不多说了,直接上代码:
- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="3-2.aspx.cs" Inherits="_3_2" %>
- <html>
- <head runat="server">
- <title>Sending an xml Request</title>
- <script type="text/javascript">
- var xmlHttp;
- function createXMLHttpRequest()
- {
- if (window.ActiveXObject){
- xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
- }
- else if (window.XMLHttpRequest){
- xmlHttp=new XMLHttpRequest();
- }
- }
- function CreateDomDoc() //创建XML文档对象
- {
- var signatures = ["Msxml2.DOMDocument.5.0","Msxml2.DOMDocument.4.0","Msxml2.DOMDocument.3.0","Msxml2.DOMDocument","Microsoft.XmlDom"];
- for(var i=0;i<signatures.length;i++)
- {
- try
- {
- var domDoc = new ActiveXObject(signatures[i]);
- return domDoc;
- }
- catch(e)
- {
- alert("您的浏览器不支持xml组件");
- }
- }
- return null;
- }
- function createXML()
- {
- // var xml="<pets>";
- var options=document.getElementById("petTypes").childNodes;
- var option=null;
- // for(var i=0;i<options.length;i++)
- // {
- // option=options[i];
- // if (option.selected)
- // {
- // xmlxml=xml+"<type>"+option.value+"<//type>";
- // }
- // }
- //
- // xmlxml=xml+"<//pets>";
- // return xml;
- var doc=CreateDomDoc();
- var root=doc.createElement("pets");
- var type;
- for (var i=0;i<options.length;i++)
- {
- option=options[i];
- if (option.selected)
- {
- type=doc.createElement("type");
- type.text=option.value;
- root.appendChild(type);
- }
- }
- doc.appendChild(root);
- return doc;
- var type
- }
- function sendPetTypes(){
- createXMLHttpRequest();
- var xml=createXML(); // 注意此处要传xmlDoc的对象,要不会出现Status 500的错误
- var url="3-2.aspx";
- xmlHttp.open("POST",url,true);
- xmlHttp.onreadystatechange=handleStateChange;
- xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
- xmlHttp.send(xml);
- //alert(xml);
- }
- function handleStateChange(){
- //alert(xmlHttp.readyState);
- if (xmlHttp.readyState==4){
- // alert(xmlHttp.status);
- if (xmlHttp.status==200)
- {
- parseResults();
- // alert(xmlHttp.responseText);
- }
- }
- }
- function parseResults()
- {
- var responseDiv=document.getElementById("serverResponse");
- if (responseDiv.hasChildNodes())
- {
- responseDiv.removeChild(responseDiv.childNodes[0]);
- }
- var responseText=document.createTextNode(xmlHttp.responseText);
- responseDiv.appendChild(responseText);
- }
- </script>
- </head>
- <body>
- <h1>Select the types of pets in your home:</h1>
- <form id="form1" runat="server">
- <select id="petTypes" size="6" multiplemultiple=multiple>
- <option value="cats">Cats</option>
- <option value="dogs">Dogs</option>
- <option value="fish">Fish</option>
- <option value="birds">Birds</option>
- <option value="hamsters">Hamsters</option>
- </select>
- <br /><br />
- <input type=button value="Submit Pets" onclick="sendPetTypes();" />
- </form>
- <h2>Server Response:</h2>
- <div id="serverResponse"></div>
- </body>
- </html>
后台 3-2.aspx.cs
- using System;
- using System.Data;
- using System.Configuration;
- using System.Collections;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- using System.Web.UI.HtmlControls;
- using System.Xml;
- public partial class _3_2 : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- //System.IO.StreamReader str = Request.InputStream;
- if (Request.InputStream.Length > 0)
- {
- XmlDocument xmlDoc = new XmlDocument();
- try
- {
- xmlDoc.Load(Request.InputStream);
- }
- catch
- {
- System.IO.Stream inStream = Request.InputStream;
- byte[] buffer = new byte[inStream.Length];
- inStream.Read(buffer, 0, buffer.Length);
- string szXML = System.Text.Encoding.Default.GetString(buffer, 0, buffer.Length);
- xmlDoc.LoadXml(szXML);
- }
- string responseText = "You have selected:";
- XmlNodeList nodelist = xmlDoc.GetElementsByTagName("type");
- if (xmlDoc.GetElementsByTagName("type").Count>0)
- {
- for (int i = 0; i < nodelist.Count; i++)
- {
- responseText = responseText +"/n"+ nodelist[i].ChildNodes[0].Value;
- //responseText = responseText+"/n" + nodelist[i].FirstChild.Value;
- }
- }
- Response.ContentType = "text/xml";
- Response.Write(responseText);
- Response.End();
- }
- }
- }
- // From:飞鸟工作室 http://www.birdzone.cn