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 javascript in request
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
user



Data înscrierii: 20/Iul/2006
Mesaje: 24

Trimis: Joi Iul 20, 2006 3:15 pm    Titlul subiectului: problema javascript in request  

in codul pe care il solicit prin ajax, deci in pagina care este incarcata in locul dorit printr-un drop-down meniu, am un script java. in pagina solicitata merge perfect, in pagina in care folosesc metoda ajax pt a solicita pagina respectiva, nu mai merge, deoarece zice ca nu exista obiectul (corect, daca ne uitam in sursa vedem ca nu avem sursa a ceea ce se incarca prin ajax)

care este solutia la asa ceva va rog ?

multumesc
Sus  
Birkoff



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

Trimis: Joi Iul 20, 2006 3:29 pm    Titlul subiectului:  

ai aici un mic exemplu de ajax, vezi daca te ajuta...
Sus  
user



Data înscrierii: 20/Iul/2006
Mesaje: 24

Trimis: Joi Iul 20, 2006 3:52 pm    Titlul subiectului:  

multumesc, dar pana unde este exemplul respectiv nu este nici o problema. Incearca sa faci un javascript in pagina1, 2, sau 3, cu un obiect pe care sa il apelei printr-un link, si o sa vezi k nu o sa mearga. Deci cum putem folosi obiectele javascript din pagina inclusa ?
Sus  
Birkoff



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

Trimis: Joi Iul 20, 2006 4:23 pm    Titlul subiectului:  

deci ca sa inteleg eu bine, tu apelezi prin AJAX o pagina si din pagina apelata vrei sa mai apelezi tot prin AJAX alta pagina (sau un obiect). Pai nu te poti folosii de acelasi script? Nu am testat ce vrei tu, dar teoretic, daca nu se cearta intre ele variabilele ar trebui sa mearga... (in cazul meu la exemplul dat, ar trebui in locul

id="locul_de_afisare"

sa am 2 id-uri separate, unul pentru prima pagina si al doilea pentru celalalt obiect inclus ulterior...

Cum am spus, nu am testat ideea ta inca...
Sus  
user



Data înscrierii: 20/Iul/2006
Mesaje: 24

Trimis: Joi Iul 20, 2006 4:30 pm    Titlul subiectului:  

nu, pagina apelata prin ajax foloseste cod javascript, nu tot ajax, am zis doar obiecte. de ex am un slideshow in pagina chemata, si nu functioneaza chemata, eroarea este ca nu gaseste obiectele (de sine statatoare apelata pagina merge)
Sus  
ExcalIbvr



Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea

Trimis: Joi Iul 20, 2006 8:15 pm    Titlul subiectului:  

Cu siguranta ar ajuta daca ai pune codul sursa.
Sus  
user



Data înscrierii: 20/Iul/2006
Mesaje: 24

Trimis: Vin Iul 21, 2006 9:04 am    Titlul subiectului:  

iata si niste cod:

pagina care apeleaza: x.htm
Cod:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>

<BODY>

<script type="text/javascript" language="javascript">

   

    function makeRequest(url) {

        var http_request = false;

        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // See note below about this line
            }
        } 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('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
        http_request.onreadystatechange = function() { alertContents(http_request); };
        http_request.open('GET', url, true);
        http_request.send(null);

    }

    function alertContents(http_request) {

        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                document.getElementById('hot').innerHTML=http_request.responseText;
            } else {
                alert('There was a problem with the request.');
            }
        }

    }
</script>
<span
    style="cursor: pointer; text-decoration: underline"
    onclick="makeRequest('test.html')">
        Make a request
</span>
<br /><br />

<div id=hot>
</div>


</BODY>
</HTML>


si pagina apelata: y.htm
Cod:
<script type="text/javascript" language="javascript">
<!--

function mesaj()
{
alert('bla bla');
}

-->
</script>

<a href="#" onClick="javascript: mesaj()">click</a>


dupa cum veti putea observa, y.htm de sine statator bineinteles ca merge alertul la click, dar din x.htm va da eroare javascript, ca nu gaseste obiectul (functia). Ce se poate face ?
Sus  
ExcalIbvr



Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea

Trimis: Vin Iul 21, 2006 9:21 am    Titlul subiectului:  

Eu la makeRequest vad ca apelezi test.html. Presupun ca este vorba de y.html. Sau chiar ai scris test.html si nu ai pagina test.html?
Sus  
user



Data înscrierii: 20/Iul/2006
Mesaje: 24

Trimis: Vin Iul 21, 2006 9:37 am    Titlul subiectului:  

da, test.html=y.htm, am uitat sa inlocuiesc si acolo cand am scris aici, nu aia e problema. Dar de ce nu faci o incercare ? (cu y.htm in loc de test.html, bineinteles)
Sus  
ExcalIbvr



Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea

Trimis: Vin Iul 21, 2006 10:10 am    Titlul subiectului:  

Am schimbat un pic... x.html:
Cod: <html>
<head>
  <title>Ajax test</title>
  <script type="text/javascript" language="javascript">

  // holds an instance of XMLHttpRequest
  var xmlHttp = createXmlHttpRequestObject();

  // creates an XMLHttpRequest instance
  function createXmlHttpRequestObject()
  {
    // will store the reference to the XMLHttpRequest object
    var xmlHttp;
    // this should work for all browsers except IE6 and older
    try
    {
      // try to create XMLHttpRequest object
      xmlHttp = new XMLHttpRequest();
    }
    catch(e)
    {
      // assume IE6 or older
      var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                      "MSXML2.XMLHTTP.5.0",
                                      "MSXML2.XMLHTTP.4.0",
                                      "MSXML2.XMLHTTP.3.0",
                                      "MSXML2.XMLHTTP",
                                      "Microsoft.XMLHTTP");
      // try every id until one works
      for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
      {
        try
        {
          // try to create XMLHttpRequest object
          xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
        }
        catch (e) {} // ignore potential error
      }
    }
    // return the created object or display an error message
    if (!xmlHttp)
      alert("Error creating the XMLHttpRequest object.");
    else
      return xmlHttp;
  }

  function makeRequest(url)
  {
    // only continue if xmlHttp isn't void
    if (xmlHttp)
    {
      // try to connect to the server
      try
      {
        // continue only if the XMLHttpRequest object isn't busy
        // and the cache is not empty
        if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
        {
          xmlHttp.open("GET", url, true);
          xmlHttp.onreadystatechange = alertContents;
          xmlHttp.send(null);
        }
      }
      catch (e)
      {
        // display an error when failing to connect to the server
        alert(e.toString());
      }
    }
  }

  // function that handles the HTTP response
  function alertContents()
  {
    // when readyState is 4, we read the server response
    if (xmlHttp.readyState == 4)
    {
      // continue only if HTTP status is "OK"
      if (xmlHttp.status == 200 || xmlHttp.status == 0)
      {
        try
        {
          var response = xmlHttp.responseText;
          document.getElementById('hot').innerHTML = response;
        }
        catch(e)
        {
          alert(e.toString());
        }
      }
      else
      {
        alert("Not ready"); 
      }
    }
  }
 
  function mesaj()
  {
    alert('bla bla');
  }
  </script>
</head>

<body>
  <a href="javascript: void(0)" onclick="makeRequest('y.html')">Make a request</a>
  <br /><br />
  <div id="hot"></div>
</body>
</html>
Si y.html
Cod: <a href="javascript: void(0)" onclick="javascript: mesaj()">click</a>
Foloseste un fisier .js extern.
Sus  
user



Data înscrierii: 20/Iul/2006
Mesaje: 24

Trimis: Vin Iul 21, 2006 10:19 am    Titlul subiectului:  

ok, tu ai inlaturat cauza, eu vroiam sa stiu de ce nu merge asa cum era :wink: Adica ai pus functia mesaj() in x.htm

Problema este ca y.htm de multe ori este y.php, in care o functie javascript este generata dinamic. Acesta este si cazul meu (in y.php generez o functie javascript cu pozele necesare pt slideshow in functie de parametrul trimis lui y.php), exemplul cu x.htm si y.htm a fost pt a intelege voi care este buba, si anume ca un script java din y.htm nu poate fi apelat. De ce nu poate fi apelat ? Nu exista nici o metoda ?
Sus  
Amenthes



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

Trimis: Vin Iul 21, 2006 10:44 am    Titlul subiectului:  

Auziti, dar AJAX nu returneaza numai fisiere XML?
Stiu ca mai merge si cu altele(fisiere .txt) dar ala nu e chiar AJAX(ci AHAH).
Sus  
ExcalIbvr



Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea

Trimis: Vin Iul 21, 2006 10:49 am    Titlul subiectului:  

@Amenthes, exista o diferenta intre AJAX si Ajax... :)

@user, abordezi gresit problema. Lasa functia JavaScript in afara lui y.whatever si fa-o mai generica. De la server trimite doar parametri, nu functia intreaga. Trimiti niste valori pe care le pasezi functiei, sa faca ce vrei tu.
Poti folosi XML pentru raspunsul server-ului sau, si mai bine, JSON.
Sus  
user



Data înscrierii: 20/Iul/2006
Mesaje: 24

Trimis: Vin Iul 21, 2006 10:59 am    Titlul subiectului:  

cred ca am inteles ce spui, de fapt imi dadusem seama, dar nu vroiam sa accept aceasta "limitare" :) ok, o sa ma orientez spre alte metode

thanks
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