Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: AJAX OnSuccess return PROBLEM
Forum PHP.pl > Forum > XML, AJAX
pfirlej
Hej,

mam taki skrypt

  1. var resp = 0;
  2. function ajax() {
  3. new Ajax.Request('checkforcall.php?agent=<? echo $_SESSION['agent'] ?>', {
  4. method:'get',
  5. onComplete: function(t) {
  6. var resp = t.responseText;
  7. return resp;
  8. },
  9. });
  10. }
  11. var i = 0;
  12. while(i < 1000) {
  13. var resp = ajax()
  14. alert(resp);
  15. if(resp == '0' || resp == '1') {
  16. progress.style.display="";
  17. } else {
  18. new Insertion.After('details', resp);
  19. progress.style.display="none";
  20. buttons.style.display="";
  21. break;
  22. }
  23. i++;
  24. }


Czyli co ma sie odbyc?
chce zeby

  1. var resp = ajax()


Pobralo wartosc z

  1. onComplete: function(t) {
  2. var resp = t.responseText;
  3. return resp;
  4. },


Tymczasem zamiast dostac nowa wartosc, dostaje resp = 'undefined', nie umiem wyjac zmiennej z OnComplete i przekazac jej w inne miejsce czy to w ogole jest mozliwe?

Pozdrawiam,
Piotrek
fridek
A czemu robisz trzy razy var?
Nie jestem specem od JS, ale wg mnie wystarczy:

  1. var resp = false;
  2.  
  3. function ajax() {
  4. new Ajax.Request('checkforcall.php?agent=<? echo $_SESSION['agent'] ?>', {
  5. method:'get',
  6. onComplete: function(t) {
  7. resp = t.responseText;
  8. },
  9. });
  10. }
  11. var i = 0;
  12. while(i < 1000) {
  13. ajax;
  14. alert(resp);
  15. if(resp == '0' || resp == '1') {
  16. progress.style.display="";
  17. } else {
  18. new Insertion.After('details', resp);
  19. progress.style.display="none";
  20. buttons.style.display="";
  21. break;
  22. }
  23. i++;
  24. }
pfirlej
Cytat(fridek @ 9.06.2007, 16:21:34 ) *
A czemu robisz trzy razy var?
Nie jestem specem od JS, ale wg mnie wystarczy:


No i wlasnie rzecz w tym ze nie wystarczy, mimo, ze stworzyles na poczatku zmienna globalna resp, to AJAX nie nadpisuje tej zmiennej... alert => 'false'... smile.gif
Morkai
Mógłbyś podać, że korzystasz z biblioteki Prototype winksmiley.jpg
Kod
var handleCheckForAll = function( transport )
{
    var result = transport.responseText;
    
    if ( ( result == '0' ) || ( result == '1' ) )
    {
        progress.style.display = '';
    }
    else
    {
        new Insertion.After( 'details', result );
        
        progress.style.display = 'none';
        buttons.style.display  = '';
        
        i = 1000;
    }
}

for ( var i = 0; i < 1000; i++ )
{
    new Ajax.Request( 'checkforall.php',
    {
        method: 'get',
        params:
        {
            agent: '<?php print $_SESSION['agent'] ?>'
        },
        onComplete: handleCheckForAll
    } );
}


Albo zostosuj kod frideka, z tym że popraw
Kod
while(i < 1000) {
ajax;
alert(resp);
na
Kod
while(i < 1000) {
ajax();
alert(resp);


Ajax.Request() nic nie zwraca, dlatego Twój kod nie działa.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.