WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   Ajax + Firefox (https://www.wn.se/forum/showthread.php?t=24545)

martine 2007-10-24 12:42

Citat:

Originally posted by Urme@Oct 24 2007, 09:12

Det verkar som den aldrig kör req.open etc i checkEmail dock, utan den hoppar direkt till …

Det är möjligt att exemplet inte fungerar utan vidare, skrev bara ihop det lite snabbt.

Är http-req-objektet verkligen skapat?

I princip ska exemplet fungera i alla fall.

Urme 2007-10-24 13:41

Citat:

Ursprungligen postat av martine
Citat:

Ursprungligen postat av Urme
Det verkar som den aldrig kör req.open etc i checkEmail dock, utan den hoppar direkt till …

Det är möjligt att exemplet inte fungerar utan vidare, skrev bara ihop det lite snabbt.

Är http-req-objektet verkligen skapat?

I princip ska exemplet fungera i alla fall.

ja det är den, här är hela koden, jag kanske har missat nåt helt men har kollat igenom det ett par gånger.

Kod:

function createXMLHttpRequest() {
 var ua;
 if(window.XMLHttpRequest) {
  try {
  ua = new XMLHttpRequest();
  } catch(e) {
  ua = false;
  }
 } else if(window.ActiveXObject) {
  try {
  ua = new ActiveXObject("Microsoft.XMLHTTP");
  } catch(e) {
  ua = false;
  }
 }
 return ua;
}

var req = createXMLHttpRequest();

var epost = "";
var wait = false;

function nybokstav(x) {
        epost=x;
        checkEmail();
}

function checkEmail() {
        if(req.readyState == 0 || req.readyState == 4) {
 req.open("GET", "includes/ajax/newsubscriber.ajax.php?action=checkemail&email="+escape(epost), true);
 req.onreadystatechange = handleCheckEmailResp;
 req.send(null);
        } else {
 wait = true;
 document.getElementById('validtext').innerHTML = "Väntar...";
        }
}

function handleCheckEmailResp() {
        if(req.readyState == 4){
 if(req.status == 200) {
        if (req.responseText == "Valid!") {
  document.getElementById('validimage').innerHTML = "<img src=\"images/valid.png\" alt=\"\">";
  document.getElementById('validtext').innerHTML = "Godkänd!";
  document.getElementById('btnSave').disabled = false;
        } else if(req.responseText == "Exists!") {
  document.getElementById('validimage').innerHTML = "<img src=\"images/invalid.png\" alt=\"\">";
  document.getElementById('validtext').innerHTML = "Existerar!";
  document.getElementById('btnSave').disabled = true;
        } else if(req.responseText == "inValid!") {
  document.getElementById('validimage').innerHTML = "<img src=\"images/invalid.png\" alt=\"\">";
  document.getElementById('validtext').innerHTML = "Ej godkänd!";
  document.getElementById('btnSave').disabled = true;
        } else {
  document.getElementById('validtext').innerHTML = req.responseText;
        }
 } else {
        document.getElementById('validtext').innerHTML = "Error: Status "+req.status;
 }

 if(wait) {
        checkEmail();
        wait = false;
 }
 }
}


martine 2007-10-25 00:14

Kallar du också med funktionen bokstav() ?

<input type="text" id="email" name="email" class="inputtext1" onKeyUp="javascript:nybokstav(this.value);"/>

(man skulle ju också kunna lägga in epost=x; i funktionen checkEmail förstås och slopa nybokstav(), det var mer som en illustration)

Har du testat att lägga in en alert(epost); före och efter req.open och req.send() för att se att skriptet åtminstone kommer så långt i checkEmail() utan felmeddelanden?

Urme 2007-10-26 09:04

Vet inte vad jag gjorde men nu när jag testar scriptet får verkar det fungera utan att jag ändrat något, verkar märkligt :)

Men du ska ha ett stort tack för att ha löst det! :)

melin 2007-10-26 09:26

varför köra vid varje teckenförändring förresten? jag skulle kört en kontroll då man lämnar fältet

dvs istället för onchange() / onkeydown() så kör jag på onblur()

martine 2007-10-26 09:45

Citat:

Originally posted by melin@Oct 26 2007, 09:26
varför köra vid varje teckenförändring förresten? jag skulle kört en kontroll då man lämnar fältet

dvs istället för onchange() / onkeydown() så kör jag på onblur()

Haken med onchange är väl just att det kanske inte händer förrens man klickar på submit och då är det ju ingen nytta med ajax längre…

(Edit: Fast just i det här fallet är väl inte onkeydown helt nödvändigt, men ibland kan det bli riktigt snyggt, vid sökningar etc.)


Alla tider är GMT +2. Klockan är nu 12:28.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson