problem med at få C# script til at virke
HejHar en Wrox bog ang. Ajax men kan ikke få det til at virke rigtigt.
Når jeg i VS2005 vælger min .htm fil og klikker "View in Browser" og så vises den fint nok men klikker jeg i det link der hedder "Tilføj i kurv" så updateres siden men den viser ikke en linje under linket ang. at vare en tilføjet som den burde gøre.
håber nogle har tid til at hjælpe.
--- Catalogue1.htm ---
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
<script type="text/javascript" src="Cart.js"></script>
</head>
<body>
<br />
<img id="cover" src="Autumn Leaves.jpg" height="200px" width="200px" /><br />
<br />
<b>Bog:</b><span id="book">Efterårs bogen</span><br />
<b>Forfatter:</b><span id="authors">Linda Petersen</span><br />
<b>ISBN:</b><span id="ISBN">555652318</span><br />
<b>Pris:</b><span id="price">kr. 169,95</span><br />
<br />
<a href="#" onclick="AddRemoveItem('Add');">Tilføj til Kurv</a><br />
<br />
<span id="cart"></span>
</body>
</html>
--- Cart.js ---
var xHRObject = false;
if (window.XMLHttpRequest)
{
xHRObject = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
xHRObject = new ActiveXObject("Microsoft.XMLHTTP");
}
function getData()
{
if (xHRObject.readyState == 4 && xHRObject.status == 200)
{
var serverResponse = xHRObject.responseXML;
var header = serverResponse.getElementsByTagName("book");
var spantag = document.getElementById("cart");
spantag.innerHTML = "";
for (i=0; i<header.length; i++)
{
if (window.ActiveXObject)
{
spantag.innerHTML += " " + header[0].firstChild.text;
spantag.innerHTML += " " + header[0].lastChild.text + " " + "<a href='#' onclick='AddRemoveItem(\"Remove\");'>Fjern Vare</a>";
}
}
}
}
function AddRemoveItem(action)
{
var book = document.getElementById("book").innerHTML;
if(action=="Add")
{
xHRObject.open("GET", "Managecart.aspx?action=" + action + "&book=" +encodeURIComponent(book)+ "&value=" + Number(new Date), true);
}
else
{
xHRObject.open("GET", "Managecart.aspx?action=" + action + "&book=" +encodeURIComponent(book)+ "&value=" + Number(new Date), true);
}
xHRObject.onreadystatechange = getData;
xHRObject.send(null);
}
--- ManageCart.aspx ---
<%@ Page Language="C#" Debug="true" %>
<%@ Import Namespace="System.Xml" %>
<script language="C#" runat="server">
void Page_Load()
{
string newitem = Request.Params["book"];
string action = Request.Params["action"];
Hashtable ht = new Hashtable();
if (Session["Cart"] != null)
{
ht = (Hashtable)Session["Cart"];
if (action == "Add")
{
if (ht.ContainsKey(newitem))
{
int value = int.Parse(ht[newitem].ToString());
ht.Remove(newitem);
value++;
ht.Add(newitem, value);
Session["Cart"] = ht;
Response.ContentType = "text/xml";
Response.Write(toXml(ht));
}
else
{
ht.Add(newitem, 1);
Session["Cart"] = ht;
Response.ContentType = "text/xml";
Response.Write(toXml(ht));
}
}
else
{
ht.Remove(newitem);
Session["Cart"] = null;
Response.ContentType = "text/xml";
Response.Write(toXml(ht));
}
}
else
{
ht.Add(newitem, 1);
Session["Cart"] = ht;
Response.ContentType = "text/xml";
Response.Write(toXml(ht));
}
}
string toXml(Hashtable ht)
{
XmlDocument XmlDoc = new XmlDocument();
XmlNode versionNode = XmlDoc.CreateXmlDeclaration("1.0", "ISO-8859-1", "yes");
XmlNode maidNode = XmlDoc.CreateElement("cart");
XmlDoc.AppendChild(versionNode);
XmlDoc.AppendChild(mainNode);
foreach (string key in ht.Keys)
{
XmlNode childNode = XmlDoc.CreateElement("book");
XmlNode TitleNode = XmlDoc.CreateElement("Title");
XmlNode QuantityNode = XmlDoc.CreateElement("Quantity");
TitleNode.AppendChild(XmlDoc.CreateTextNode(key));
QuantityNode.AppendChild(XmlDoc.CreateTextNode(ht[key].ToString()));
childNode.AppendChild(TitleNode);
childNode.AppendChild(QuantityNode);
mainNode.AppendChild(childNode);
}
string strXml = XmlDoc.InnerXml;
return strXml;
}
</script>