Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ajax] Połączenie Ajax+Smarty
Forum PHP.pl > Forum > XML, AJAX > AJAX
tomeknh
witam,

już parę godzin kombinuję jak najlepiej połączyć Ajax + Smarty. próbowałem na jQuery, które znam i Smarty które też znam :-), jednak nie za bardzo kumają się te dwa skrypty...

i tutaj pytanie, jaką bibliotekę Ajaxa do Smarty polecacie tak aby wszystko elegancko hulało? czytałem o module do Smarty ale mało tam funkcji...chciałbym coś a'la jQuery

jeśli ktoś zna jakieś dobre artykuły na ten temat czy coś również chętnie zobaczę


domyślam się, że najlepiej gdyby biblioteka ajaxa zwracała wartości w postaci zmiennej, wtedy prosto już przekazać wszystko do Smarty

pozdrawiam i dziękuje Tomek
nospor
jQuery nie ma nic do niedzialania w smarty. Jedno nie ma zadnego związku z drugim.
Jesli ci nie dziala, znaczy ze nie źle tego uzywasz i tyle. Pokaz kod to pogadamy
tomeknh
Szefie, kod działa, wszystko się wykonuję tylko jest to trochę pokombinowane aby wszystko hulało. Dlatego pytam czy jest jakaś inna biblioteka Ajaxa, bardziej podchodząca pod Smarty
nospor
Cytat
ednak nie za bardzo kumają się te dwa skrypty...
Tak napisales, wiec wywnioskowalem to co wywnioskowalem smile.gif

Podtrzymuje zdanie: jquery nadaje sie do smartiego. Tak samo jak kazdy inny lib: prototype, i inne cuda.
Osobiscie nie widzialem nic, co by bylo napisane tak by zgadzalo sie ze smarty - nawet nie wiem o czym mowisz winksmiley.jpg
matix
@TomekNH:

jQuery to biblioteka Javascript, czyli wszystko wykonuje się po stronie klienta. Natomiast PHP, Ruby, Python i inne języki do programowania stron www włącznie wykonują się po stronie SERWERA.

Nie ma opcji, aby te dwie rzeczy ze soba kolizowały.

Pokaż kod, jak mówił @nospor wtedy powiemy ci co i jak.
Moim zdaniem coś jest nie tak z kodem PHP skoro jQuery nie działa - czasami się tak zdarza.
raf_79
Witam

Podepnę się pod tego wątka.
Zaczynam dopiero swą przygodę z ajaxem poczytałem i jest sporo przykładów o pobieraniu danych z plików mało jednak co robić z bazą danych. Doszedłem jednak jak to wyświetlać i fajnie działa. Teraz chce dodać do tego smarty.
Ale niestety nie wiem za bardzo jak się do tego zabrać.

Mam takie pliczki
index.php
  1. <?php
  2. require(':/smarty/Smarty.class.php');
  3. $s = new Smarty;
  4. $s->template_dir = ':/serwisy/ajax/mysql_smarty/templates';
  5. $s->config_dir = ':/serwisy/ajax/mysql_smarty/config';
  6. $s->cache_dir = ':/serwisy/ajax/mysql_smarty/cache';
  7. $s->compile_dir = ':/serwisy/ajax/mysql_smarty/templates_c';
  8.  
  9. $s = new Smarty;
  10. $s->assign('wynik', $wynik);
  11.  
  12. $strona = $s->fetch('index.tpl');
  13. echo $strona;
  14. ?>


dane.php
  1. <?php
  2. require_once ('../../lacz_obsl.php');
  3.    
  4. $wyn = mysql_query ("SELECT * FROM rodz_masz");
  5.  
  6. $wynik = "<table><tr></td><tr>";
  7.  
  8. while ($wiersz = mysql_fetch_assoc ($wyn))
  9.    $wynik .= "<tr><td>{$wiersz ['NAZWA_RODZ']}</td></tr>";
  10. $wynik .= "</table>";
  11.  
  12. echo $wynik;
  13. ?>


ajax.js
Kod
var r;

function odbierzDane()
{
    if (r.readyState == 4 && r.status == 200) {
        document.getElementById('content').innerHTML = r.responseText;
    }
}


function podajDane()
{
    if (r = getXMLHttpRequest()) {
        r.open('GET', 'dane.php', true);
        r.onreadystatechange = odbierzDane;
        r.send(null);    
    }
}


function wyczyscDane()
{
    document.getElementById('content').innerHTML = '';
}

index.tpl
Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css" href="style/style.css" />
    <script type="text/javascript" src="xmlhttprequest.js"></script>
    <script type="text/javascript" src="ajax.js"></script>    
    </head>
<body>
    <div id="pojemnik" onmouseover="podajDane();" onmouseout="wyczyscDane();">
        Rodzaje maszyn
    </div>
    <div id="content"></div>
    </div>

</body>
</html>


Wiem że na pewno inaczej muszę zrobić plik dane.php znaczy do zmiennej wynik przypisać tylko dane bez html ale jak to dalej przesłać ?

Z góry dzięki za odpowiedź i pomoc

Pozdrawiam
Rafał
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.