Avatar billede dotnewbi Juniormester
06. oktober 2008 - 08:48 Der er 10 kommentarer og
1 løsning

problem med ajax

Hej eksperter,

Jeg har et problem, jeg kan ikke få javascript funktioner til at køre automatisk, på mine ajax loaded sider, f.eks har jeg en login side fra hvilken jeg poster inputdata til en login check side som jeg henter ind i en div via ajax, og det virker fint men jeg kan ikke på check siden til at redirect hvis login er ok og jeg har prøvet med både asp.net (c#) Response.Redirect("url"); men også men javascript : <script>window.location ="url"; </script>, og jeg har også prøvet med at kalde en javascript funktion både via onload.resend(); og resend(); men der sker intet!!
det "HTML" output som check siden retuner er :

<html>
<head>
<script>
onload.resend();
function resend(){
window.location ="admin.aspx"
}
</script>
</head>
<body>
<div class="mess">
login er ok!
</div>
<script>
window.location ="admin.aspx"
</script>



</body>
Avatar billede w13 Novice
06. oktober 2008 - 09:27 #1
Du skal vel kode det ind i din AJAX-funktion, så hvis den logger fint ind, så redirecter den.
Avatar billede w13 Novice
06. oktober 2008 - 09:33 #2
Altså noget:

if (LOGGETIND) {
  window.location.href = "admin.aspx";
}
Avatar billede dotnewbi Juniormester
06. oktober 2008 - 09:58 #3
hvordan ? dette er min ajax kode

<script type="text/javascript" language="javascript">
  var http_request = false;
  function axajpage(url, containerid, parameters) {
      http_request = false;
      if (window.XMLHttpRequest) {
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
           
            http_request.overrideMimeType('text/html');
        }
      } else if (window.ActiveXObject) {
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
              http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
      }
      if (!http_request) {
        alert('error');
        return false;
      }
     
      http_request.onreadystatechange = alertContents();
      http_request.open('POST', url, containerid, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
  }

  function alertContents() {
      if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            result = http_request.responseText;
            document.getElementById(containerid).innerHTML = result;           
        } else {
            alert('Error!');
        }
      }
  }
 
  function get(obj) {
      var poststr = "user=" + encodeURI( document.getElementById("user").value ) +
                    "&pass=" + encodeURI( document.getElementById("pass").value );
      ajaxpage('checklogin.aspx', 'infobox', poststr);
  }
</script>
Avatar billede olebole Juniormester
06. oktober 2008 - 13:29 #4
<ole>

For det første sender man ikke HTML retur til klienten, når man bruger Ajax - data formateres i XML eller JSON. Hvad meningen skulle være med at sende en hel side retur, fatter jeg slet ikke  =)

Prøv at forklare, hvad det er, du gerne ville lave  ;o)

/mvh
</bole>
Avatar billede w13 Novice
06. oktober 2008 - 14:28 #5
Ole har helt ret.

Faktisk kan du lade helt være med at lave HTML og JavaScript på din ASPX-side og bare lade den være blank. Og så kan du bruge denne kode:

<script type="text/javascript" language="javascript">
  var http_request = false;
  function axajpage(url, containerid, parameters) {
      http_request = false;
      if (window.XMLHttpRequest) {
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
           
            http_request.overrideMimeType('text/html');
        }
      } else if (window.ActiveXObject) {
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
              http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
      }
      if (!http_request) {
        alert('error');
        return false;
      }
     
      http_request.onreadystatechange = alertContents();
      http_request.open('POST', url, containerid, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
  }

  function alertContents() {
      if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            window.location.href='admin.aspx';
        } else {
            alert('Error:\n\n'+http_request.responseText);
        }
      }
  }
 
  function get(obj) {
      var poststr = "user=" + encodeURI( document.getElementById("user").value ) +
                    "&pass=" + encodeURI( document.getElementById("pass").value );
      ajaxpage('checklogin.aspx', 'infobox', poststr);
  }
</script>
Avatar billede w13 Novice
06. oktober 2008 - 14:28 #6
Denne kode videresender til admin.aspx, hvis checklogin.aspx blev kørt korrekt.
Avatar billede dotnewbi Juniormester
06. oktober 2008 - 19:09 #7
Ideen er at:
1. jeg har en login side med de to input felter, når formen bliver send skal man forblive på login siden og validation af brugernavn og password + brugeres ip skal ske via den hentet checklogin side som hvis login'en fejler fremkommer som en info box i form at en div box midt på sitet (indeholdende en af tre fejl beskeder),  som automatisk lukker efter 3 sek. hvis brugeren ikke selv har lukket den, så man uden at siden reloader stadig er på login siden. Men hvis login er ok skal man sendes til admin.aspx siden
Avatar billede w13 Novice
06. oktober 2008 - 21:11 #8
Så hvad med den kode, jeg lige har vist?
Avatar billede dotnewbi Juniormester
14. oktober 2008 - 08:08 #9
smid et svar!
Avatar billede w13 Novice
14. oktober 2008 - 09:48 #10
:)
Avatar billede w13 Novice
24. oktober 2008 - 19:00 #11
Tak for points! :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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