[AJAX] Wil het resultaat van een onreadystate->send returnen

Pagina: 1
Acties:

  • -Nexus
  • Registratie: Februari 2002
  • Laatst online: 27-11 14:54

-Nexus

|1.25GHz G4 Powerbook|

Topicstarter
het resultaat van een send returnen.
Wat is mijn probleem?

function alertContents() wordt aangeroepen, ivm wachttijd browserreadystate 4. Nu werkt het prima, ik krijg het resultaat wat ik wil. Maar nu wil ik het integreren in mijn oplossing. Namelijk de text returnen in de orginele variabele die de gehele GEt methode aanriep.

Ik weet niet hoe ik die waarde uit de functie haal :(


Echter worden in alle AJAX methode's een functie onreadystatechange aangeroepen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        http_request.onreadystatechange = alertContents; <-------
    http_request.open("GET", url+parameters, true);
    http_request.setRequestHeader("Content-type", "text/xml");
    http_request.setRequestHeader("Content-length", parameters.length);
    http_request.setRequestHeader("Connection", "close");
    http_request.send('');
function alertContents() 
{
    if (http_request.readyState == 4)
        {
            if (http_request.status && http_request.status == 200)
            {
                result = http_request.responseText;
                return(result);
            } 
        alert("HTTP error: "+http_request.status);
        }

}


Ik wil graag de waarde van de variable result uit de functie halen.

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wat bedoel je met "uit de functie halen"?

Je kan ipv een return(result) toch ook gewoon een custom functie aanroepen die je responseText verwerkt en ergens weergeeft (als ik je goed begrijp ;))?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • -Nexus
  • Registratie: Februari 2002
  • Laatst online: 27-11 14:54

-Nexus

|1.25GHz G4 Powerbook|

Topicstarter
Bedankt voor je reply!
Ik gebruik deze functie niet als weergeef actie, ik wil een waarde aan een variabele in mijn PHP script geven;
Deze waarde komt uit een GET actie in de AJAX functie.

(lastig uitleggen, mijn excuses)

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Probeer het toch maar, want je gaat nu volgens mij dingen door elkaar halen :)

Als je een PHP script hebt, waar is de aanroep daarnaartoe en hoe denk je die gegevens mee te geven. Dat maakt het een stuk duidelijker welke schakel ontbreekt en kunnen we je sneller naar een oplossing helpen :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • -Nexus
  • Registratie: Februari 2002
  • Laatst online: 27-11 14:54

-Nexus

|1.25GHz G4 Powerbook|

Topicstarter
okay vertel graag meer, maar wil ook niet verwarren met een informatieoverload... :>
Achtergrond verhaal, de functie maakt deel uit van een verficatiescript. Ik probeer dit in javascript te doen omdat de verficatie moet gebeuren voor er verder gegaan mag worden.


PHP:
1
$naamvariable = refreshContent('/functions/login/third.php' + databaseoutput'');


en die roept deze jongen aan:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*  --------------------------------------------------
    Ajax handler
    -------------------------------------------------- */
var http_request = false;
   function getResponse(url) {
      //Browser compatability
      http_request = false;
      if(window.XMLHttpRequest) 
      {
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
         }
            } else if (window.ActiveXObject) { // IE
             try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         } 
      }
      
      if (!http_request) {
         alert('Cannot create XMLHttpRequest object');
         return false;
      }
      
    http_request.onreadystatechange = alertContents;  
    http_request.open("GET", url, true);
    http_request.setRequestHeader("Content-type", "text/xml");
    http_request.setRequestHeader("Content-length", parameters.length);
    http_request.setRequestHeader("Connection", "close");
    http_request.send('');
     
}
/*  --------------------------------------------------
    AJAX, on result refresh
    -------------------------------------------------- */
function alertContents() 
{
    if (http_request.readyState == 4)
        {
            if (http_request.status && http_request.status == 200)
            {
                result = http_request.responseText;
                return(result);
            } 
        alert("HTTP error: "+http_request.status);
        }

}

  • -Nexus
  • Registratie: Februari 2002
  • Laatst online: 27-11 14:54

-Nexus

|1.25GHz G4 Powerbook|

Topicstarter
ik wil met $naamvariable vervolgens een AJAX actie doen die de pagina vernieuwd.

if ($naamvariable == $verifcatiestringdieikzelfhebverzonnen) {

}

[ Voor 30% gewijzigd door -Nexus op 27-03-2007 14:23 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Als je als laatste reageert kan je ook gewoon de Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/tweakers/images/icons/edit.gif knop gebruiken he ;)



Begrijp ik nou goed dat je vanuit PHP een JS functie aanroept en dan verwacht dat PHP weer verder gaat?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 10:55

crisp

Devver

Pixelated

Geen asynchroon request maar een synchroon request gebruiken; zie dit voorbeeld dat ik vanochtend nog typte ;)

Intentionally left blank


  • -Nexus
  • Registratie: Februari 2002
  • Laatst online: 27-11 14:54

-Nexus

|1.25GHz G4 Powerbook|

Topicstarter
Pardon het is geen PHP maar javascript, en ik verwacht dat ook helemaal niet. En je heb helemaal gelijk :) (probeerde door voorbeeld duidelijk te maken waarvoor de code nodig is).

Ik wens slechts 2 AJAX functies te gebruiken
1. [vul variable met de textResponse van een GET]
2. [vul een div genaamd "content" met de textResponse van een GET]

ik loop met "vul variable met de textResponse van een GET" tegen het probleem aan dat er een tijd overheen gaat voordat de readystate 4 is, en dat dit in AJAX wordt afgevangen met een functie.

Ik zal zoals je voorstelde een functie moeten schrijven die een afhandeling doet: if readystate ==4 {
vulwaarde(waarde);
}

Of zoiets. BtM909; ik wil je bedanken voor je meekijken!

  • -Nexus
  • Registratie: Februari 2002
  • Laatst online: 27-11 14:54

-Nexus

|1.25GHz G4 Powerbook|

Topicstarter
crisp, je snapt me! Ik heb het dank zij JAX opgelost, en de boel even netjes gemaakt... thanks guys!

[ Voor 6% gewijzigd door -Nexus op 27-03-2007 16:08 ]

Pagina: 1