Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Jquery odnośnik następny poprzedni
Forum PHP.pl > Forum > Przedszkole
arzach
Witam
Próbuje zrobić w jquery odnośniki następny poprzedni które będą w ajax pobierany newsy. Na chwile obecną zrobiłem tyle.

  1. <script src="http://code.jquery.com/jquery-latest.js"></script>
  2.  
  3.  
  4. $(document).ready(function(){
  5. start(1);
  6.  
  7. $("#nastepny").click(function(){
  8. start(2);
  9. });
  10. $("#poprzedni").click(function(){
  11. start(3);
  12. });
  13.  
  14.  
  15. });
  16.  
  17. function start(id)
  18. {
  19. $.ajax({
  20. type: "GET",
  21. url: "odbierz.php",
  22. data: { name: id },
  23. pobierz: function (XMLHttpRequest) {
  24. $("#wynik").html("Trwa pobieranie newsa.");
  25. },
  26. success: function(msg) {
  27. $("#wynik").html(msg);
  28. },
  29. error: function (XMLHttpRequest, textStatus, errorThrown) {
  30. $("#wynik").html('Przepraszamy, news nie zostal pobrany.');
  31. }
  32. });
  33. }
  34.  
  35. </head>
  36. <p id="nastepny">Nastepny</p><p id="poprzedni">Poprzedni</p>
  37. <div id="wynik"></div>
  38.  
  39. </body>
  40. </html>


I nie wiem jak pobrać id i przekazać do plik odbierz.php za pomocą tych linków. Może ktoś pomóc jak mam pobrać id news i wysłać je ajaxem.
thomas2411
Kod
(...)
$.ajax({
type: "GET",
url: "odbierz.php",
data: { 'id=' + id},
pobierz: function (XMLHttpRequest) {
(...)
arzach
Chyba mnie nie zrozumiałeś o co mi chodzi.



Przy staracie strony pobieram ostatnio dodany news.

I tu działa ładnie news się wyświetla.



News ten oczywiście ma id które nie wiem jak mam w Jquery pobrać i potem znowu wysłać do pliku odbierz.php który pobierz poprzedni news lub następny za pomocą tych odnośników.

To co ty podałes to ja wiem. Tylko nie wiem jak za pomocą tej zmiennej id mam przekazać id aktualnie wyswietlanego newsa.
Skie
W pliku news.php, który generuje Ci aktualnie wyświetlanego newsa (pobiera z bazy, czy jak Ty tam to robisz), wyświetl sobie jego ID w taki sposób byś mógł go pobrać JSem, np dodaj do skryptu:

  1. <?php
  2. print("<div id=current_news_ID style=display:none;>".$ID_newsa."</div>");
  3. ?>


Co w kodzie wynikowym da Ci po prostu np:

  1. <div id=current_news_ID style=display:none;>1</div>


Potem w JSie, zrobisz sobie tak:

Kod
currentID = parseInt($D('current_news_ID').innerHTML);


i już masz pobrane ID obecnego newsa ;-)
oczywiście to pobieranie musiałbyś zrobić w zdarzeniu onSuccess AJAX'a, żeby wszystko ładnie chodziło.

Powodzenia!
thomas2411
To nie dość, że zamotałeś pytanie, to jeszcze w kodzie masz id wpisane na sztywno.

Zrób tak, że linki następny poprzedni niech mają jako id, id newsa. W onclick wstaw wywołanie z danego linka opdowiednią funkcję z parametrem this.id. Wtedy będziesz miał ten id danego newsa.
Jak pobierasz dane do wyniku dla danego newsa o zadanym id i wyświetlasz to gdzieś na stronie, to masz w ajax funkcję:
Kod
.success: function(msg) {
$("#wynik").html(msg);
},


To dodaj do tego success kod, który dany id z parametru funkcji wstawi jako id danego linka czy gdzie tam to potrzebujesz.
arzach
Dzięki zrobiłem tak
  1. <script src="http://code.jquery.com/jquery-latest.js"></script>
  2.  
  3.  
  4. $(document).ready(function(){
  5. start(1, 1);
  6. $("#nastepny").click(function(){
  7. var id = $("#news_id").html();
  8. var akcja = 'nastepwny';
  9. start(id, akcja);
  10. }
  11. );
  12. $("#poprzedni").click(function(){
  13. var id = $("#news_id").html();
  14. var akcja = 'poprzedni';
  15. start(id, akcja);
  16. }
  17. );
  18. });
  19.  
  20. function start(id , akcja)
  21. {
  22. $.ajax({
  23. type: "GET",
  24. url: "odb.php",
  25. data: {
  26. name: id,
  27. akcja: akcja
  28. },
  29. pobierz: function (XMLHttpRequest) {
  30. $("#wynik").html("Trwa pobieranie newsa.");
  31. },
  32. success: function(msg) {
  33. $("#wynik").html(msg);
  34. },
  35. error: function (XMLHttpRequest, textStatus, errorThrown) {
  36. $("#wynik").html('Przepraszamy, news nie zostal pobrany.');
  37. }
  38. });
  39. }
  40.  
  41. </head>
  42. <p id="nastepny">Nastepny</p><p id="poprzedni">Poprzedni</p>
  43. <div id="wynik"></div>
  44.  
  45. </body>
  46. </html>

w pliku odbierz.php dałem ukryty div z id a potem za pomocą
  1. var id = $("#news_id").html();

odczytałem wartość diva.

I teraz mam pytanie jak mam zrobić zęby id było pobierane tylko wtedy gdy żądnie ajax zwróci true

Chodzi o ten kawałek kodu
  1. $(document).ready(function(){
  2. start(1, 1);
  3. $("#nastepny").click(function(){
  4. var id = $("#news_id").html();
  5. var akcja = 'nastepwny';
  6. start(id, akcja);
  7. }
  8. );
  9. $("#poprzedni").click(function(){
  10. var id = $("#news_id").html();
  11. var akcja = 'poprzedni';
  12. start(id, akcja);
  13. }
  14. );
  15. });


?
Skie
Ten kawałek kodu daj żeby się wykonywał na AJAXowe onSuccess();

Kod
var id = $("#news_id").html();


Przed rozpoczęciem wysłania zapytania daj

Kod
id = false;


(tak żeby przy każdym zapytaniu zmienna id była "resetowana")

(przy czym id musi być zmienną globalną, no chyba, że te wszystkie funkcje opakujesz w klasę - byleby funkcja onClick miała dostęp do tej zmiennej)

a potem w onClick:

Kod
if (id) {
   var akcja = 'poprzedni';
   start(id, akcja);
}


Ja bym tak to zrobił, ale będziesz musiał nanieść dużo poprawek do swojego kodu.
arzach
Zrobiłem tak i zmiennej id w ogóle nie pobiera.
  1. <script src="http://code.jquery.com/jquery-latest.js"></script>
  2.  
  3. var id = '';
  4.  
  5. $(document).ready(function(){
  6. start(1, 1);
  7.  
  8. $("#klik").click(function () {
  9. alert(id);
  10. });
  11.  
  12. });
  13.  
  14. function start(id , akcja)
  15. {
  16. $.ajax({
  17. type: "GET",
  18. url: "od.php",
  19. data: {
  20. name: id,
  21. akcja: akcja
  22. },
  23. pobierz: function (XMLHttpRequest) {
  24. var id = false;
  25. $("#wynik").html("Trwa pobieranie newsa.");
  26. },
  27. success: function(msg) {
  28. $("#wynik").html(msg);
  29. var id = $("#news_id").html();
  30. },
  31. error: function (XMLHttpRequest, textStatus, errorThrown) {
  32. $("#wynik").html('Przepraszamy, news nie zostal pobrany.');
  33. }
  34. });
  35. }
  36.  
  37. </head>
  38. <p id="nastepny">Nastepny</p><p id="poprzedni">Poprzedni</p>
  39. <div id="wynik"></div>
  40. <p id="klik">Pokaz id</p>
  41. </body>
  42. </html>


Wie ktoś jak temu zaradzić ?
erix
Cytat
wogole

Czy to jest jakieś nowoodkryte plemię?

Sprawdź sobie konsolę błędów.
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.