Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

problema JS + AJAX
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> AJAX
Subiectul anterior :: Subiectul următor  
Autor Mesaj
cristiluc



Data înscrierii: 25/Iun/2008
Mesaje: 18

Trimis: Mie Iun 25, 2008 9:56 am    Titlul subiectului: problema JS + AJAX  

salut.. daca am gresit aria, imi cer scuze
incerc sa apelez dintr-o functie in Javascript o functie de traducere facuta cu AJAX
problema e ca la apelare nu trece de onSuccess, deci nu imi returneaza traducerea..
insa dupa ce se executa toate functiile, revine in functia de traducere si abia atunci intra in blocul onSuccess

nu reusesc sa inteleg de ce intra de 2 ori in functia de traducere, si doar a 2a oara da si un rezultat corect
mentionez ca sunt incepator in domeniu
va multumesc anticipat
Sus  
Amenthes



Data înscrierii: 12/Dec/2005
Mesaje: 574

Trimis: Mie Iun 25, 2008 4:26 pm    Titlul subiectului:  

O bucata de cod,... ceva?
Sus  
cristiluc



Data înscrierii: 25/Iun/2008
Mesaje: 18

Trimis: Mie Iun 25, 2008 4:38 pm    Titlul subiectului:  

nu pot pune nici o bucata de cod pt ca azi mi-am facut user ul si nu am inca 5 posturi :(
Sus  
Birkoff



Data înscrierii: 18/Mar/2004
Mesaje: 2573
Locație: Bucuresti

Trimis: Mie Iun 25, 2008 4:48 pm    Titlul subiectului:  

nu poti pune linkuri, dar cod poti... verifica sa nu ai http sau www in cod... inainte sa il pui aici... eventual desparte w w w sau h t t p...
Sus  
cristiluc



Data înscrierii: 25/Iun/2008
Mesaje: 18

Trimis: Mie Iun 25, 2008 4:51 pm    Titlul subiectului:  

asta e codul functiei:

function _translate(_untranslated) {

var u r l = "";

new Ajax.Request(u r l, {
method: 'g e t',
onSuccess: function(transport) {
_trans = transport.responseText.evalJSON();
_translated = _trans[0].translated;

if ("" == _translated) {
_translated = _untranslated;
}
}
});
return _translated;
}

nu intra niciodata in functia transport, deci nu trece de onSuccess
are cineva vreo idee de ce? :(
Sus  
mihaitha



Data înscrierii: 04/Mai/2007
Mesaje: 1757
Locație: Sibiu

Trimis: Joi Iun 26, 2008 8:47 am    Titlul subiectului:  

Poate e o problema in implementarea clasei Ajax sau a metodei Request()... N-ai cum sa verifici readyState sau responseHeader sa vezi pana unde avanseaza sau ce raspuns primeste? Poate nu se acceseaza url cum trebuie... :-??
Sus  
Amenthes



Data înscrierii: 12/Dec/2005
Mesaje: 574

Trimis: Joi Iun 26, 2008 10:28 am    Titlul subiectului:  

Esti sigur ca URL-ul nu returneaza 404?

Nu am folosit niciodata prototype asa ca poate ma insel, insa potrivit documentatiei onSuccess e apelata doar daca serverul returneaza un Status de tipul 2xy.

Instaleaza-ti Firebug in Firefox si vezi ce raspuns primesti de la server in urma requestului. Alternativ ai putea adauga inca un callback in optiunile de initializare: onFailure(), in care sa ai un alert, ceva.
Sus  
cristiluc



Data înscrierii: 25/Iun/2008
Mesaje: 18

Trimis: Joi Iun 26, 2008 10:41 am    Titlul subiectului:  

am firebug instalat, insa unde pot vedea ce returneaza U R L-ul, adica 404 sau 2xy?
Sus  
kleampa



Data înscrierii: 10/Iul/2005
Mesaje: 2109
Locație: Bucuresti

Trimis: Joi Iun 26, 2008 10:42 am    Titlul subiectului:  

deschizi firebugul si dai pe primul tab din stanga numit "console"
Sus  
cristiluc



Data înscrierii: 25/Iun/2008
Mesaje: 18

Trimis: Joi Iun 26, 2008 10:50 am    Titlul subiectului:  

m-am uitat acolo si arata cam asa:

Response Headers
Date Thu, 26 Jun 2008 08:43:04 GMT
Server Apache/2.2.6 (Fedora)
X-Powered-By PHP/5.1.6
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma no-cache
Content-Length 31
Connection close
Content-Type text/html; charset=UTF-8
Request Headers
Host ......
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
Accept text/javascript, text/html, application/xml, text/xml, */*
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
X-Requested-With XMLH t t p Request
X-Prototype-Version 1.6.0.2

te rog sa arunci o privire, poate iti dai seama de problema.. multumesc mult pt ajutor
Sus  
Amenthes



Data înscrierii: 12/Dec/2005
Mesaje: 574

Trimis: Joi Iun 26, 2008 11:16 am    Titlul subiectului:  

Stai ca acum mi-am dat eu seama ce crezi tu ca nu merge. Adica merge dar nu cand vrei tu...

Tu ai asa:

Cod:
function _translate(_untranslated) {

    var url = "";

    new Ajax.Request(u r l, {
        method: 'get',
        onSuccess: function(transport) {
            _trans = transport.responseText.evalJSON();
            _translated = _trans[0].translated;

            if ("" == _translated) {
                _translated = _untranslated;
            }
        }
    });
   
    return _translated;
}


Problema e ca tu returnezi _translated, insa in momentul in care tu faci return Ajax inca nu a terminat apelul catre server, parsarea si verificarile din callback-ul onSuccess, adica onSuccess e intradevar executata dupa ce faci tu return (sau mai bine zis nu stii niciodata cand e executata, poate fi inainte, poate fi dupa) si de fapt tocmai asta e interesant la Ajax, e asincron. Tu poti face alte lucruri cat timp isi face el treaba. Ceea ce poti tu face insa, e sa ai in interiorul onSuccess ceva de genul:

Cod:
HTMLElement.innerHTML = _translated;
Sus  
mihaitha



Data înscrierii: 04/Mai/2007
Mesaje: 1757
Locație: Sibiu

Trimis: Joi Iun 26, 2008 11:59 am    Titlul subiectului:  

Bravo, Amenthes-Ochi-de-Vultur :)

cristiluc, vezi ce se intampla cand nu acorzi putin atentie modului in care postezi. Eu unul, si sunt sigur ca si ceilalti care s-au mai dat cu parerea pe aici (cu exceptia lui Amenthes desigur) nu m-am chinuit sa citesc exact ce face functia, pentru ca in modul in care ai postat-o imi era foarte greu. Nu zic ca mi-as fi dat seama din prima de problema, dar ar fi fost si asta o posibilitate.

Deci data viitoare cand postezi cod, fa-o cum a facut-o Amenthes: intr-un bloc [code][/code], si indentat frumos.

Sporuri in continuare.
Sus  
cristiluc



Data înscrierii: 25/Iun/2008
Mesaje: 18

Trimis: Joi Iun 26, 2008 2:14 pm    Titlul subiectului:  

va multumesc mult pt ajutor.. aveti dreptate, data viitoare o sa pun codul intr-o maniera inteligibila.. asa vroiam sa fac si acum dar imi tot dadea eroare spunandu-mi ca sunt nou pe forum, si cand am reusit sa il fac sa mearga, am uitat sa il indentez
ms mult inca o data
Sus  
Amenthes



Data înscrierii: 12/Dec/2005
Mesaje: 574

Trimis: Joi Iun 26, 2008 2:15 pm    Titlul subiectului:  

Citat:
Bravo, Amenthes-Ochi-de-Vultur :)


Saru'mana :wink:
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> AJAX
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community