我一個朋友在看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