Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][AJAX] Undefined, nie zwraca treści strony
Babcia@Stefa
post
Post #1





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

Ostrzeżenie: (0%)
-----


Witam, mam Sobie taki kod:

Kod
var ObiektXMLHttp;
var Response;
if (window.XMLHttpRequest)
  {
   ObiektXMLHttp = new XMLHttpRequest(); }
   else if (window.ActiveXObject)
      {
       ObiektXMLHttp = new ActiveXObject("Microsoft.XMLHTTP"); }  


function view_source(source)
{
    var new_response = false;

    if(ObiektXMLHttp)
    {
        ObiektXMLHttp.open("GET", source);

        ObiektXMLHttp.onreadystatechange = function()
        {
            if (ObiektXMLHttp.readyState == 4)
            {
                return ObiektXMLHttp.responseText;
               }
        }
    
        ObiektXMLHttp.send(null);

        
    } else {
        alert('Twoja przestarzała przeglądarka nie obsługuje XMLHTTP');
    }
}


function Vote ( mode, object )
{
    var src = view_source ('vote.php?id='+object.id+'&option='+mode);
    alert ( src );
    if ( Response == 'success' )
    {
        switch ( mode )
        {
            case 1:
                document.getElementById('vote_'+object.id).innerHTML = document.getElementById('vote_'+object.id).innerHTML.parseInt()-1;
            break;
            
            case 2:
                document.getElementById('vote_'+object.id).innerHTML = document.getElementById('vote_'+object.id).innerHTML.parseInt()-1;
            break;
        }
    }
}


Wywołuję:
onclick - Vote( 1, obiekt znacznika "a" - "a href..." z id np. 2 )

w vote.php mam treść "success", bez HTML ani PHP, testowo..

I zawsze jest undefined, albo false, albo dopiero za drugim razem pokazuje tresć z vote.php w alercie, ale to jak troche zmodyfikuje, bo ten kod bez modyfikacji pokazuje w alercie undefined.


Chcę zapisać w zmiennej src w funkcji Vote() treść zwróconą poprzez zapytanie vote.php?id='+object.id+'&option='+mode

@edit
Kod na samym dole działa, ale jest jeden haczyk, to już nie odnosi się do nazwy tego tematu.

Pozdrawiam, WebNuLL

Ten post edytował Babcia@Stefa 2.07.2009, 19:53:01


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Kod
if (ObiektXMLHttp.readyState == 4)
            {
                return ObiektXMLHttp.responseText;
               }
        }

W tym kontekście nie zwrócisz wartości.

Rób tak, jak robi się w innych tego typu funkcjach:
Kod
if (ObiektXMLHttp.readyState == 4)
            {
                funkcja(ObiektXMLHttp.responseText);
               }
        }

I funkcja przechwytuje właściwe działanie. A jak przekazać konkretną funkcję jako parametr? To proste, ale niech będzie pracą domową. [;


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Babcia@Stefa
post
Post #3





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

Ostrzeżenie: (0%)
-----


Za nic nie rozumiem tego javascriptu, jest NIE LOGICZNY :/

Kod
var ObiektXMLHttp;
var Response = false;
if (window.XMLHttpRequest)
  {
   ObiektXMLHttp = new XMLHttpRequest(); }
   else if (window.ActiveXObject)
      {
       ObiektXMLHttp = new ActiveXObject("Microsoft.XMLHTTP"); }  

function func_save ( response_arg )
{
    Response = response_arg;
}


function view_source(source)
{
    var new_response = false;

    if(ObiektXMLHttp)
    {
        ObiektXMLHttp.open("GET", source);

        ObiektXMLHttp.onreadystatechange = function()
        {
            if (ObiektXMLHttp.readyState == 4)
            {
                func_save(ObiektXMLHttp.responseText);
               }
        }
    
        ObiektXMLHttp.send(null);

        return Response;

        
    } else {
        alert('Twoja przestarzała przeglądarka nie obsługuje XMLHTTP');
    }
}


function Vote ( mode, object )
{
    view_source ('vote.php?option=wait');
    var src = view_source ('vote.php?id='+object.id+'&option='+mode);
    alert ( src );

    if ( isInteger(Response.parseInt()) )
    {
        switch ( mode )
        {
            case 1:
                document.getElementById('votebar_'+object.id).innerHTML = 'Dziękujemy';
            break;
            
            case 2:
                document.getElementById('votebar_'+object.id).innerHTML = 'Dziękujemy';
            break;
        }
    }
}


I zwraca pustkę...

Co jest źle?

Niestety nie mam czasu się do uczać z javascriptu, proszę o pomoc w rozwiązaniu problemu.

Pozdrawiam, WebNuLL

Ten post edytował Babcia@Stefa 2.07.2009, 17:02:52


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Nie możesz skorzystać ze zwracania wartości w tej funkcji. JS jest ok pod warunkiem, że się go rozumie.

Cytat
Niestety nie mam czasu się do uczać z javascriptu

Możemy nie mieć czasu pisać Ci gotowców. Giełda ofert, to nie ten dział.

Zwrócony wynik jest w funkcji func_save, to przez nią realizuj obsługę odpowiedzi.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Babcia@Stefa
post
Post #5





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

Ostrzeżenie: (0%)
-----


@edit
Kod
var ObiektXMLHttp;
var Response = false;
if (window.XMLHttpRequest)
  {
   ObiektXMLHttp = new XMLHttpRequest(); }
   else if (window.ActiveXObject)
      {
       ObiektXMLHttp = new ActiveXObject("Microsoft.XMLHTTP"); }  

function func_save ( response_arg )
{
    Response = response_arg;
}


function view_source(source)
{
    var new_response = false;

    if(ObiektXMLHttp)
    {
        ObiektXMLHttp.open("GET", source);

        ObiektXMLHttp.onreadystatechange = function()
        {
            if (ObiektXMLHttp.readyState == 4)
            {
                func_save(ObiektXMLHttp.responseText);
               }
        }
    
        ObiektXMLHttp.send(null);
    } else {
        alert('Twoja przestarzała przeglądarka nie obsługuje XMLHTTP');
    }
}


function Vote ( mode, object )
{
    view_source ('vote.php?id='+object.id+'&option='+mode);
    var src = Response;
    alert ( src );

    if ( isInteger(Response.parseInt()) )
    {
        switch ( mode )
        {
            case 1:
                document.getElementById('votebar_'+object.id).innerHTML = 'Dziękujemy';
            break;
            
            case 2:
                document.getElementById('votebar_'+object.id).innerHTML = 'Dziękujemy';
            break;
        }
    }
}


A więc tak, za pierwszym wywołaniem metody Vote() zwraca false, ale za drugim zwraca to co trzeba.
To dla mnie dziwne, co jest źle?

Pozdrawiam, WebNuLL

Ten post edytował Babcia@Stefa 2.07.2009, 19:41:27


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 16:43