Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX]Odświeżenie danych
Forum PHP.pl > Forum > Przedszkole
kamilo818
Mam taki problem:

Po kliknięciu w przycisk dodaje wartosci do tablicy w taki sposób:
  1. $('div.dodaj_do_koszyka').click(function(){
  2. var rozmiar = $('div#rozmiar select option:selected').text();
  3. var kolor = $('div#kolor select option:selected').text();
  4. var cena =$('div#cena p#cena').attr('value');
  5. var ilosc = $('div#cena input').attr('value');
  6.  
  7. if(ilosc<=0){
  8. $('div#cena input').attr('value','1');
  9. ilosc = $('div#cena input').attr('value');
  10. }
  11.  
  12. alert('Dodano do koszyka: \nRozmiar: '+rozmiar +'\nKolor: '+ kolor +'\nW cenie: '+ cena +' zł\nIlość: '+ilosc);
  13.  
  14. var dataString = 'rozmiar='+ rozmiar + '&kolor=' + kolor + '&cena=' + cena + '&ilosc=' + ilosc;
  15.  
  16. $.ajax({
  17. type: 'get',
  18. url: ('./page/koszyk.php'),
  19. data: dataString,
  20. success: function(obj){
  21. $('html').html(obj);
  22. }
  23. });
  24.  
  25. });

koszyk.php:

  1. <div class="koszyk_main">
  2. <?php
  3.  
  4.  
  5.  
  6. function dodaj($item) {
  7. $_SESSION['koszyk'][] = $item;
  8. }
  9.  
  10. function usun($id) {
  11. unset($_SESSION['koszyk'][$id]);
  12. }
  13. if(isset($_GET['rozmiar'])){
  14. $rozmiar = $_GET['rozmiar'];
  15. $kolor = $_GET['kolor'];
  16. $cena =$_GET['cena'];
  17. $ilosc = $_GET['ilosc'];
  18.  
  19. $item = array('rozmiar'=>$rozmiar, 'kolor'=>$kolor, 'cena'=>$cena, 'ilosc'=>$ilosc);
  20.  
  21. dodaj($item);
  22. }
  23.  
  24. foreach($_SESSION['koszyk'] as $key=>$val) {
  25. echo 'Id: '.$key.', rozmiar: '.$val['rozmiar'].', kolor: '.$val['kolor'].', cena: '.$val['cena'].', ilosc: '.$val['ilosc']."<br>";
  26. }
  27.  
  28. ?>
  29. </div>

Problem polega na tym że w ten sposób odświża mi się cała witryna przez co na stronie dane produktu znikają dane. Jak zrobić żeby odświeżał się tylko plik koszyk.php ?
nospor
No to zamiast nadpisywac caly dokument
$('html').html(obj);
nadpisuj tylko jakiegos diva....
$('#ID_DIVA_W_KTORYM_CHCESZ_WYSWIETLAC_KOSZYK').html(obj);
kamilo818
tak robiłem:

  1. $.ajax({
  2. type: 'get',
  3. url: ('./page/koszyk.php'),
  4. data: dataString,
  5. beforeSend: function(){
  6. },
  7. success: function(obj){
  8. $('.koszyk').html(obj);
  9. },
  10. complete: function(){
  11.  
  12. }
  13. });


i w tym wypadku działa prawie dobrze ale:
-taki koszyk mam w rozwijalnym dive i jeśli div jest schowany i go rozwine to fakycznie działa tak jak trzeba i pojawia sie nowa wartosc
- natomiast jak ten div jest rozwiniety(widoczny) to po przesłaniu danych pojawią się w nim cała wczytana strona, a po schowaniu i rozwinięciu poajawia sie poprawna zawartosc koszyka

W czym może być tu problem?

edit:

I pojawił się kolejny problem. Jak już prześle dane do koszyka to po ponownym kliknieciu w przycisk 'dodaj zmaówienie' nie pobiera danych o produkcie. Oraz podwójnie dodaje wartosci

tu wrzuciłem: http://page4u.waw.pl/shop/item/123456792

proszę o pomoc smile.gif

Ktoś coś bo utknąłem na tym sad.gif

edit

Ok mały progres

w ajax podałem pełną ścieżkę

  1. $.ajax({
  2. type: 'get',
  3. url: ('http://localhost/shop/page/koszyk.php'),
  4. data: dataString,
  5. success: function(obj){
  6. $('.koszyk_main').html(obj);
  7. }
  8.  
  9. });


i działa dobrze.

Ale teraz gdy w koszyku mam pryciski do usuwania produktów działają tylko raz. Dopiero jak odswieze strone znow mozna go kliknac i jest akcja.
tak wyglada kod jquery
  1. $('div.wyczysc').click(function(){
  2.  
  3. var dataString = 'wyczysc=true';
  4. $.ajax({
  5. type: 'get',
  6. url: ('http://localhost/shop/page/koszyk.php'),
  7. data: dataString,
  8. success: function(obj){
  9. $('.koszyk_main').html(obj);
  10. }
  11.  
  12. });
  13. return false;
  14. });
  15.  
  16. $('div.koszyk_main div.usun').click(function(){
  17.  
  18. var usun = $(this).attr('id');
  19. var dataString = 'usun='+usun;
  20. $.ajax({
  21. type: 'get',
  22. url: ('http://localhost/shop/page/koszyk.php'),
  23. data: dataString,
  24. success: function(obj){
  25. $('.koszyk_main').html(obj);
  26. }
  27.  
  28. });
  29. return false;
  30. });




Jaki moze być powód?

Edit
Fajnie samemu sobie odpowiadac tongue.gif

Rozwiązałem ten problem przez przeniesienie kodu jquery do pliku koszyka i wsztko śmiga.

Jak komuś sie będzie chciało to chętnie sie dowiem czemu nie działało to w poprzedniej wersji.
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.