Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jQuery][php?] Problem z load - nie ładuje strony
deha21
post 4.01.2010, 16:12:12
Post #1





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Witam,
Mam skrypt przenoszenia obrazków z galerii do góry/na dół. Po kliknięciu wykonuje się skrypt (poprawnie) a następnie ma załadować ponownie stronę (showpics.php) w divie (#pics).
[JAVASCRIPT] pobierz, plaintext
  1. $(".move").click(function(){
  2. var id = $("#id").val();
  3. var pic = $(this).attr("id");
  4. var move = $(this).attr("name");
  5. $.ajax({
  6. type: "GET",
  7. url: "move.php",
  8. data: {id: id, pic: pic, move: move},
  9. onsuccess:$("#pic").load("showpics.php?id="+id),
  10. });
  11. });
[JAVASCRIPT] pobierz, plaintext

  1. $id=$_GET['id'];
  2. require("../config.php");
  3. if (!isset($id)) {
  4.  
  5. $result=mysql_query("SELECT * FROM zdjecia WHERE active='0' ORDER BY position DESC");
  6. while($row=mysql_fetch_array($result)) {
  7. echo "<div class='pic'><img src='../upload/thumb_".$row['file']."'><a href='' class='delete' id='".$row['id']."'><img src='del.png' alt='Usuń' title='Usuń'></a>
  8. <a href='' id='".$row['id']."' class='move' name='up' title='Przenieś wyżej'><img src='up.png' alt='góra'></a>
  9. <a href='' id='".$row['id']."' class='move' name='down' title='Przenieś niżej'><img src='down.png' alt='dół'></a>
  10. </div>";
  11. }
  12.  
  13. } elseif (isset($id)) {
  14.  
  15. $result=mysql_query("SELECT * FROM zdjecia WHERE auto='$id' ORDER BY position DESC");
  16. while($row=mysql_fetch_array($result)) {
  17.  
  18. echo "<div class='pic'><img src='../gallery/".$id."/thumb_".$row['file']."'>
  19. <a href='' class='delete' id='".$row['id']."' rel='".$row['file']."'><img src='del.png' alt='Usuń' title='Usuń'></a>
  20. <a href='' id='".$row['id']."' class='move' name='up' title='Przenieś wyżej'><img src='up.png' alt='góra'></a>
  21. <a href='' id='".$row['id']."' class='move' name='down' title='Przenieś niżej'><img src='down.png' alt='dół'></a>
  22. </div>";
  23. }
  24.  
  25. }

Niestety po kliknięciu cała strona przeładowuje się. Przy tym nie przesyła zmiennej która potrzebna jest do jej otworzenia (id galerii), a więc zostaje pusta strona tak na prawdę.
Dziwne, że taki sam skrypt działa mi na innej mojej stronie. Z tym, że tamta ma inną budowę ale to nie powinno mieć znaczenia.


--------------------
Go to the top of the page
+Quote Post
wookieb
post 4.01.2010, 17:39:23
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




nie masz
Kod
return false;

na koncu funkcji zdarzenia click


--------------------
Go to the top of the page
+Quote Post
deha21
post 4.01.2010, 18:20:42
Post #3





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


O to chodzi?
[JAVASCRIPT] pobierz, plaintext
  1.  
  2. $(".move").click(function(){
  3. var id = $("#id").val();
  4. var pic = $(this).attr("id");
  5. var move = $(this).attr("name");
  6. $.ajax({
  7. type: "GET",
  8. url: "move.php",
  9. data: {id: id, pic: pic, move: move},
  10. onsuccess:$("#pic").load("showpics.php?id="+id),
  11. });
  12. return false;
  13. });
[JAVASCRIPT] pobierz, plaintext

Nie pomaga. Dalej to samo :/


--------------------
Go to the top of the page
+Quote Post
wookieb
post 4.01.2010, 18:39:57
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A teraz zobacz jaki parametr w metodzie ajax przyjmuje wlasciwosc onsuccess a potem zobacz do czego sluzy load, bo widzę, że nie masz pojęcia jak to wyglada.

Ten post edytował wookieb 4.01.2010, 18:42:06


--------------------
Go to the top of the page
+Quote Post
deha21
post 4.01.2010, 19:28:50
Post #5





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Szukałem o onsuccess ale nic konkretnego nie znalazlem. Może i nie wiem do czego służy ale wiem co umożliwia. Tak jak pisałem, robiłem coś takiego wcześniej i działało więc dlaczego teraz to nie działa. To mnie zastanawia.


--------------------
Go to the top of the page
+Quote Post
wookieb
post 4.01.2010, 20:52:11
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Spójrz na wykorzystanie load
http://docs.jquery.com/Ajax/load#urldatacallback
Cytat
Load HTML from a remote file and inject it into the DOM.

Robi dokładnie to co chciałeś

Dodatkowo onSuccess (a dokładniej "success" - literówkę miałeś) powinien być callbackiem do funkcji a ty podałeś mu kawałek kodu , który robi to samo co przed chwilą się wykonało smile.gif


--------------------
Go to the top of the page
+Quote Post
deha21
post 4.01.2010, 21:19:48
Post #7





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Cytat(wookieb @ 4.01.2010, 20:52:11 ) *
Dodatkowo onSuccess (a dokładniej "success" - literówkę miałeś) powinien być callbackiem do funkcji a ty podałeś mu kawałek kodu , który robi to samo co przed chwilą się wykonało smile.gif

Czyli ma być "success"... dziwne bo czasami widzę success, czasami onsuccess ale zawsze działa mi tak samo :/
Nie rozumiem jak moge podać kod który się już wcześniej wykonał? Chyba, że nie chodzi o load... Ehhh pokiełbasione to winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
Fifi209
post 5.01.2010, 06:10:51
Post #8





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Robisz:

[JAVASCRIPT] pobierz, plaintext
  1. success: function(data) {
  2. $("#twojdiv").html(data);
  3. }
[JAVASCRIPT] pobierz, plaintext


Czy coś na ten styl. ;]
Przyjąłem, że dane odbierasz w html'u.

Poza tym albo ajax albo load smile.gif

Ten post edytował fifi209 5.01.2010, 06:11:59


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
deha21
post 5.01.2010, 11:05:59
Post #9





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


To teraz już nic nie rozumiem winksmiley.jpg Robiąc sposobem fifi209 div się nie ładuje strony tylko pokazuje adres tego czego ma załadować. To za sprawą html().
Zatem jak zrobić żeby po kliknięciu div #pic przeładował się jeszcze raz (lub załadował stronę ze skryptem)?

EDIT: Dodam, że skrypt który zamieściłem w pierwszym poście działa na innej podstronie. Z tym, że tam nie jest przesyłana zmienna:
[JAVASCRIPT] pobierz, plaintext
  1. onsuccess:$("#pic").load("showpics.php")
[JAVASCRIPT] pobierz, plaintext


Ten post edytował deha21 5.01.2010, 11:21:26


--------------------
Go to the top of the page
+Quote Post
wookieb
post 5.01.2010, 11:17:30
Post #10





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Co to u ciebie move.php a showpics.php?
Wystaw to publicznie to łatwiej będzie Ci pomóc.


--------------------
Go to the top of the page
+Quote Post
deha21
post 5.01.2010, 12:31:48
Post #11





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


move.php to skrypt który przenosi zdjęcia o pozcyję wyżej (w bazie mysql)
showpics.php to wyświetlanie zdjęć z bazy

showpics.php:
  1. $result=mysql_query("SELECT * FROM zdjecia WHERE auto='$id' ORDER BY position DESC");
  2. while($row=mysql_fetch_array($result)) {
  3.  
  4. echo "<div class='pic'><img src='../gallery/".$id."/thumb_".$row['file']."'>
  5. <a href='#' class='delete' id='".$row['id']."' rel='".$row['file']."'><img src='del.png' alt='Usuń' title='Usuń'></a>
  6. <a href='#' id='".$row['id']."' class='move' name='up' title='Przenieś wyżej'><img src='up.png' alt='góra'></a>
  7. <a href='#' id='".$row['id']."' class='move' name='down' title='Przenieś niżej'><img src='down.png' alt='dół'></a>
  8. </div>";
  9. }

move.php:
  1. if(isset($_GET['move'], $_GET['pic']) && in_array($_GET['move'], array('up', 'down'))){
  2. $sign = $_GET['move'] == 'up' ? '>' : '<';
  3. $sort = $_GET['move'] == 'up' ? 'ASC' : 'DESC';
  4.  
  5. $id = (int) $_GET['pic'];
  6.  
  7. $r = mysql_fetch_object(mysql_query('SELECT position FROM zdjecia WHERE id = '.$id));
  8. $cPos = $r->position;
  9.  
  10. $s = mysql_fetch_object(mysql_query('SELECT id, position FROM zdjecia WHERE position ' . $sign . $cPos . ' AND auto="'.$_GET['id'].'" ORDER BY position ' . $sort . ' LIMIT 1;'));
  11.  
  12. if(!is_object($s)){
  13. echo '<span style="color: #37bbeb;";>Pierwszego elementu nie wolno przenosić w góre, a ostatniego w dół.</span><br><br>';
  14. }
  15.  
  16. mysql_query(sprintf('UPDATE zdjecia SET position = %s WHERE id = %s;', $s->position, $id));
  17. mysql_query(sprintf('UPDATE zdjecia SET position = %s WHERE id = %s;', $cPos, $s->id));
  18. }

One oczywiście działają poprawnie. Przy linkach .move dodałem a href="#" i strona nie przeładowuje się już ale...tylko raz można wykonać przeniesienie zdjęcia. Potem tak jakby nic się nie działo przy kliknięciu.


--------------------
Go to the top of the page
+Quote Post
wookieb
post 5.01.2010, 12:40:05
Post #12





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Nie wiem czy będzie na 100% dobrze ale cóż..
[JAVASCRIPT] pobierz, plaintext
  1.  
  2. // zdefiniuj gdzies aby byla zmienna globalna
  3. var imageId = false;
  4.  
  5. $(".move").click(function(){
  6. var id = $("#id").val();
  7. var pic = $(this).attr("id");
  8. imageId = id;
  9. var move = $(this).attr("name");
  10. $.ajax({
  11. type: "GET",
  12. url: "move.php",
  13. data: {id: id, pic: pic, move: move},
  14. onsuccess: function()
  15. {
  16. $("#pic").load("showpics.php?id="+imageId)
  17. }
  18. });
  19. });
  20.  
  21. // jednakze preferuje zrobic to w jednej akcji gdzie przesuniesz zdjecie oraz zaladuje to co chcesz
  22. //a wtedy
  23.  
  24. $(".move").click(function(){
  25. var id = $("#id").val();
  26. var pic = $(this).attr("id");
  27. imageId = id;
  28. var move = $(this).attr("name");
  29. $.ajax({
  30. type: "GET",
  31. url: "move_and_showpics.php",
  32. data: {id: id, pic: pic, move: move},
  33. onsuccess: function(data)
  34. {
  35. $('#pic').html(data);
  36. }
  37. });
  38. });
[JAVASCRIPT] pobierz, plaintext



--------------------
Go to the top of the page
+Quote Post
deha21
post 5.01.2010, 14:11:12
Post #13





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Niestety sprowadzenie do jednego pliku wydaje się być niewygodne bo move.php jest używany jeszcze do innych rzeczy które nie korzystają z showpics.php. Jednak wydaje mi się, że i to by nie działało.
Teraz prawie działa - klikam, przenosi, przeładowuje. Klikam drugi raz - nic.


--------------------
Go to the top of the page
+Quote Post
wookieb
post 5.01.2010, 14:51:33
Post #14





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




[JAVASCRIPT] pobierz, plaintext
  1. $('.move').live('click',function()
  2. {
  3. // chyba wiadomo co..
  4. });
[JAVASCRIPT] pobierz, plaintext


--------------------
Go to the top of the page
+Quote Post
deha21
post 5.01.2010, 17:02:08
Post #15





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Alleluja, o to chodziło! winksmiley.jpg
Dzięki!


--------------------
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: 14.08.2025 - 13:47