problem med ajax call til aspx side
Hej Eksperter!jeg har en ajax funktion som jeg bruger til at hente data ind i form elementer i forbindelse med redigering af indhold og derefter sende det tilbage, og den virker perfect første gang men anden gang funktionen kaldes fejler den? Fejlen forkommer i c# funktionen og går på at id feltet er tomt men hvis jeg ud skriver min "param" i en alertbox lige før data'en bliver send kan jeg se at id'er indeholder data iform af en int som den skal?? Her er min kode:
ajaxcode + javascript functioner:
var ReceiveReq = GetXmlHttpRequestObject();
var setpostdata = "";
function GetXmlHttpRequestObject() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
}
}
function setContent(setdata, add, call) {
if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
receiveReq.open("Post", '/wediadna/wi/ajaxpages/systempagemanager/ajaxcall/ajaxcall_systempagemanager.aspx', true);
receiveReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
receiveReq.onreadystatechange = handleContent;
var param = setdata;
alert(param);
receiveReq.send(param);
}
}
function handleContent() {
if (receiveReq.readyState == 4) {
var xmldoc = receiveReq.responseXML;
var message_node = xmldoc.getElementsByTagName("message");
var call_node = message_node[0].getElementsByTagName("call");
alert(call_node[0].firstChild.nodeValue);
}
}
function saveform() {
setContent(setPost(), '27-06-2009 20:00:00', 'save');
}
function setPost() {
var InputFields = document.getElementById('content_container_main').getElementsByTagName('INPUT');
var SelectFields = document.getElementById('content_container_main').getElementsByTagName('SELECT');
var TextFields = document.getElementById('content_container_main').getElementsByTagName('TEXTAREA');
var RadioFields = document.getElementById('content_container_main').getElementsByTagName('RADIO');
alert(InputFields + "\n" + SelectFields + "\n" + TextFields + "\n" + RadioFields)
for (var x = 0; x < InputFields.length; x++) {
setpostdata += "&" + InputFields[x].name + "=" + InputFields[x].value;
}
for (var x = 0; x < SelectFields.length; x++) {
setpostdata += "&" + SelectFields[x].name + "=" + SelectFields[x].value;
}
for (var x = 0; x < TextFields.length; x++) {
setpostdata += "&" + TextFields[x].name + "=" + TextFields[x].value;
}
for (var x = 0; x < RadioFields.length; x++) {
setpostdata += "&" + RadioFields[x].name + "=" + RadioFields[x].value;
}
return setpostdata;
}
aspx siden som kaldes med ajax:
<%@ Page Language="C#" ValidateRequest="false"%>
<%@ import namespace="System.Xml" %>
<%@ import namespace="MySpace" %>
<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
string TheXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n<message>\n";
string Call = "";
if (!string.IsNullOrEmpty(Request.QueryString["Call"]))
{
Call = Request.QueryString["Call"].ToString();
}
if(Call == "save"){
TheXml += MySystem.SaveEditContent();
}
TheXml += "\n</message>\n</root>";
Response.ContentType = "text/xml";
Response.Write(TheXml);
Response.End();
}
</script>TheXml += "\n</message>\n</root>";
Response.ContentType = "text/xml";
Response.Write(TheXml);
Response.End();
}
</script>
c# funktionen der fejler:
public void SaveEditContent()
{
SqlConnection myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnect"].ConnectionString);
SqlCommand command = new SqlCommand("SaveEditContent", myConnection);
int id = 0;
if (!string.IsNullOrEmpty(HttpContext.Current.Request.Form["id"].ToString()))
{
id = int.Parse(HttpContext.Current.Request.Form["id"].ToString());
}
string name = "";
if (!string.IsNullOrEmpty(HttpContext.Current.Request.Form["name"].ToString()))
{
name = HttpContext.Current.Request.Form["name"].ToString();
}
int active = 0;
if (!string.IsNullOrEmpty(HttpContext.Current.Request.Form["active"].ToString()))
{
active = int.Parse(HttpContext.Current.Request.Form["active"].ToString());
}
string content = "";
if (!string.IsNullOrEmpty(HttpContext.Current.Request.Form["content"].ToString()))
{
content = HttpContext.Current.Request.Form["content"].ToString();
}
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@id", SqlDbType.Int);
command.Parameters.Add("@name", SqlDbType.VarChar);
command.Parameters.Add("@active", SqlDbType.VarChar);
command.Parameters.Add("@content", SqlDbType.VarChar);
command.Parameters["@id"].Value = @id;
command.Parameters["@name"].Value = @name;
command.Parameters["@active"].Value = @active;
command.Parameters["@content"].Value = @content;
command.Connection.Open();
command.ExecuteNonQuery();
command.Connection.Close();
}