Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][AJAX] Undefined, nie zwraca treści strony
Forum PHP.pl > Forum > Przedszkole
Babcia@Stefa
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
erix
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ą. [;
Babcia@Stefa
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
erix
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.
Babcia@Stefa
@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
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.