Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][JavaScript][PHP] komunikacja z ajaxem
Forum PHP.pl > Forum > Przedszkole
omxd
Witam,
mam pytanko całą komunikację przeprowadzam poprzez np.index.php?controller=page1 chcę wprowadzić ładowanie podstron poprzez funkcję ajax'a która wywołuje np. <a href="java script:ajaxpage('index.php?controller=page1', 'content');">page1</a>.Teraz zastanawiam się jak najlepiej będzie zroibć komunikacje w takim wypadku?Nie mogę używać tak jak wcześniej index.php?controller=page1 bo wtedy do diva dostaję całą stronę. Istnieje jakiś sposób żebym całość przeprowadzał dalej przez index.php korzystając z ajaxa nie używajać ...ajaxpage('page1.php', 'content').....?

kombinowałem tak ,ale wydaje mi się ,że tak jest "brzydko" ktoś ma pomyśl jak to zrobić inaczej?
//layout.phtml
  1. <?php
  2. if($_GET['element']==1){
  3. include_once('app/view/bottom.phtml');
  4. }
  5. ?>
  6. //przykladowy link do podstrony
  7. <a href="java script:ajaxpage('index.php?controller=page1&element=1', 'content');">page1</a>
  8. <div id="content">
  9.  
  10. <?php echo $this->content; ?>
  11. </div>
  12.  
  13. <?php
  14.  
  15. if($_GET['element']==1){
  16. include_once('footer.phtml');
  17. }
  18. ?>

//funkcja controller'a
  1. public function indexAction(){
  2.  
  3. $content = Lib_Factory_Controller::getController($_GET['controller']);
  4.  
  5. //$action = Lib_Factory_Final::finalUrl($_GET['controller'],$_GET['action']);
  6. $this->content = $content->run($_GET['action']);
  7. include_once('app/view/layout.phtml');
  8.  
  9.  
  10. }


nikt nie umie czy nie chce mi pomóc?
smentek
1. Nie przeplataj tagów html takich jak <a href="..."> kodem javascript.
2. Zainteresuj się jedną z nowoczesnych bibliotek js. polecam jQuery.
Speedy
Namieszałeś chłopie.
Poczytaj dokumentację jQuery tak, jak napisał mój przedmówca. Wtedy wystarczy, że do linka przypiszesz unikalne id, a następnie wywołasz zdarzenie (click), w którym wywołasz funkcję (load) i załadujesz do wybranego elementu (np. diva), któremu też przypiszesz unikalne id, wygenerowany wynik. Kod w jQuery zajmie kilka linijek, a w PHP generujesz czysty tekst.
KrzysiekWildfire
jeżeli chodzi o pomysł na wczytywanie stron ajaxem to mam dobry patent. Przy wysyłaniu zapytania możesz wysyłać w get ?ajax=true. Jeżeli masz taką wartość to wyświetlasz tylko treść strony, a jeżeli jej nie masz, to wyświetlasz całą stronę.
Tak jak koledzy wyżej proponują - wykorzystaj jQuery albo innego frameworka, zapytania w nim wyglądają w następujący sposób:

$.post('adres/strony',{ajax:true},function(data){
$("#content").html(data);
});

Jeżeli chcesz na szybko przerobić stronę w wczytywanie ajaxem to możesz zrobić następująco:

$(document).ready(function(){
$("a").click(function(){
$.post($(this).attr('href'),{ajax:true},function(data){
$("#content").html(data);
});
return false;
})
})

Przy użyciu powyższego kodu, każdy link na stronie wczytuje stronę - jeżeli masz założonego if'a w php o którym pisałem na początku, to powinno wszystko elegancko śmigać.
Sukcesów życzę.
sarxos
Dodam tylko, że nie musi to być koniecznie jQuery - równie dobrze możesz użyć Prototype albo Dojo.
webdice
Przenoszę, problem nie ma nic wspólnego z programowaniem obiektowym.
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.