Avatar billede dotnewbi Juniormester
27. juni 2009 - 21:23 Der er 1 løsning

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();

            }
Avatar billede dotnewbi Juniormester
27. juni 2009 - 23:07 #1
Jeg har selv løst problemmet, grunden var at den funktion som skal "nulstille" formen før næste data blev hentet ikke fik nulstillet id variablen som istedet for at være "4" blev "1,4"
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester