Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery][php?] Problem z load - nie ładuje strony
deha21
post
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
 
Start new topic
Odpowiedzi (1 - 14)
wookieb
post
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
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
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
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
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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
deha21
post
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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Fifi209
post
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 (IMG:style_emoticons/default/smile.gif)

Ten post edytował fifi209 5.01.2010, 06:11:59
Go to the top of the page
+Quote Post
deha21
post
Post #9





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

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


To teraz już nic nie rozumiem (IMG:style_emoticons/default/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
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
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
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
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
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
Post #15





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

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


Alleluja, o to chodziło! (IMG:style_emoticons/default/winksmiley.jpg)
Dzięki!
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 3.10.2025 - 04:20