Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przeladowanie pliku html? A moze pobranie zmiennych?
Forum PHP.pl > Forum > Po stronie przeglądarki
Stiffler
Witam,
Problem jest złożony... przynajmniej dla mnie.
http://brain-line.pl/sloma1/boxallegro/ <= Mam takiego boxa.
Cel: losowanie innych aukcji po jego schowaniu, teraz losują się po odświeżeniu strony.

1. Najpierw klasa php a pozniej jej wywołanie generuje ok 10 zmiennych dla 2 aukcji czyli po 5 dla aukcji, poprzez wywołanie jednej metody na obiekcie klasy. Przechwouja one nazwe link, czas do konca cene itp.
2. Poprzez require includuje plik php z klasa i wygenerowanymi zmiennymi, oraz wrzucam je pomiędzy kod html <?php echo dupa;?>.
3. Podpiety plik z jquery steruje boxem.

Wymyśliłem to tak. Po schowaniu boxa czyli success animation, jquery wysle zmienna POST. Skrypt sprawdzi if_exist($_POST['dupa']; ponownie odpali tą metode i wygeneruje nowe zmienne.

I tutaj się zatrzymałem. bo nie wiem jak pobrać z pliku php do jquery te 10 zmiennych.

Myślałem żeby to ominąć i po wygenerowaniu nowych zmiennych, stworzyłbym nową metoda która wygeneruje czysty plik html i spobie go pozniej załaduje poprzez $.load();
ale wydaje mi się że to troche "dirty way". Czy to jest jedyny sposob? Czy moze jest jakas opcja pobrać tylko te zmienne?
aras785
  1. <?php
  2. if(isset($_POST['dupa'] AND $_POST['dupa']==1)) {
  3. //losu j i wywal tablice
  4. $array = array(array('title'=>'Nazwa','link'=>'http://link.com'),array('title'=>'Nazwa','link'=>'http://link.com'),);
  5. return json_encode($array);
  6. }
  7. ?>


i teraz w jquery:

  1. $.post( "losuj.php", { dupa: "1"}).done(function( result ) {
  2. //petla
  3. $.each(result, function(i, item) {
  4. alert(item.title);
  5. });
  6. },"json");


Zamiast alert podmień sobie obecny content na nowy. Pozdrawiam
Stiffler
Czytam czytam i nie kumam.
Nie widze nigdzie w ajaxie niczego pod tytulem "Pobierz mi tą zmienna". Wiem jak pobrac caly dokument. Mozna by prosic przykladowe wywołanie metody żeby z pliku xxx.php pobrał zmienną $dupa = 10;
adrianpl20
co do ajaxa

wysyłajac dane, ustawiasz dataType np. na 'json, i w tym pliku Twoim na końcu (po wszelkich operacjach) wyświetlasz je php'em: echo json_encode($tablica);

można odebrać je tak:
Kod
$.ajax({
type: 'POST',
url: 'plik.php',
dataType: 'json',
data: {
zmienna1: wartosc,
zmienna2: wartosc2
},
success: function(json)
{
alert('zwrocone dane:' + json['cos1'] + ', ' + json['lalala']); // indeksy tablicy z plik.php
},
complete: function(json)
{
},
error: function(json)
{

}
});
aras785
Możesz też bardzo prosto:

  1. //po success animation
  2. $('#field').load('kod.php');


I w pliku kod.php generujesz losowo content i on wpada do bloku #field wink.gif

Stiffler
Co jeżeli plik.php zawierałby też conent php? Czy to musi być czysty html? Bo jak nie to jedyne wyjście jakie widze to zbudować string i wrzucić go przez file_put_contents();
Jestem początkujący.
Pozdrawiam

ps. I co że przy load uruchamiany jest serwer php?
Turson
Wg. przykładu aras 785, w pliku kod.php generujesz content i go zwracasz, a on automatycznie ładowany jest do elementu html na stronie.
Plik może zawierać PHP.
Pyton_000
A jak odpalis plik dupa.php to dostajesz PHP czy HTML ?
Stiffler
Dziala ! Dostaje html. Jest pieknie. Aczkolwiek funkcja $.load nie ma jednego waznego parametru. beforeComplete. chcialbym sobie wstawic progress bar. Czy da sie jej uzywac wewnatrz funkcji $.ajax?
Turson
W $.ajax masz beforeSend
Stiffler
Tylko ze w ajaxie, musze podac url, datatype itp. A ja chce tylko $.load i cos innego before complete. Probowalem se jako to poukładać zgodnie z dokumentacją, ale mi sie ot nie dodaje.
Turson
Wystarczy sam url i funkcje np. beforeSend czy success
Sprawdź:
http://stackoverflow.com/questions/2061814...oad-before-send
Stiffler
Zrobilem tak ale niestety nie dokonca dziala to tak jak trzeba. Nie ma plynnosci. Rozbilem to na beforesend success i complete ale teraz $("#field").show(); nie zmienia wlasciwosci diva z display: none na display: block.
Mozecie zerknac?

  1. $.ajax({
  2. url: "box.php",
  3. beforeSend: function(){$("#loading").show();},
  4. success: function(){$("#field2").load("box.php");},
  5. complete: function(){
  6. $("#loading").hide();
  7. $("#field").show(300);
  8. }
  9. });


http://brain-line.pl/sloma1/boxallegro/ <= Link do skryptu
Turson
Co mówi konsola i zakładka Network/Sieć - żadanie ajaxa questionmark.gif
Hmm poza tym nigdy nie spotkałem się z complete, może chodziło o .done?

Poza tym jak już korzystasz z $.ajax zamiast load(), to
Kod
success: function(msg){
$("#field2").html(msg);
},
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.