Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX][JavaScript][PHP] komunikacja z ajaxem
omxd
post 5.04.2011, 21:23:14
Post #1





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 18.05.2010

Ostrzeżenie: (0%)
-----


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?
Powód edycji: [webdice]:
Go to the top of the page
+Quote Post
smentek
post 7.04.2011, 19:57:28
Post #2





Grupa: Zarejestrowani
Postów: 130
Pomógł: 11
Dołączył: 7.04.2003

Ostrzeżenie: (10%)
X----


1. Nie przeplataj tagów html takich jak <a href="..."> kodem javascript.
2. Zainteresuj się jedną z nowoczesnych bibliotek js. polecam jQuery.


--------------------
.:SMENTEK:.
Go to the top of the page
+Quote Post
Speedy
post 9.04.2011, 01:44:21
Post #3





Grupa: Zarejestrowani
Postów: 651
Pomógł: 28
Dołączył: 4.12.2004

Ostrzeżenie: (0%)
-----


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.


--------------------
Sygnatura niezgodna z regulaminem.
Go to the top of the page
+Quote Post
KrzysiekWildfire
post 16.04.2011, 14:37:23
Post #4





Grupa: Zarejestrowani
Postów: 93
Pomógł: 11
Dołączył: 27.10.2010
Skąd: Kutno/Poznań

Ostrzeżenie: (0%)
-----


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ę.
Go to the top of the page
+Quote Post
sarxos
post 15.06.2011, 14:20:56
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 15.06.2011

Ostrzeżenie: (0%)
-----


Dodam tylko, że nie musi to być koniecznie jQuery - równie dobrze możesz użyć Prototype albo Dojo.
Go to the top of the page
+Quote Post
webdice
post 15.06.2011, 14:30:30
Post #6


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Przenoszę, problem nie ma nic wspólnego z programowaniem obiektowym.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 12:35