Wykonanie php bez przeladowywania całej strony

0

Witam
Mam coś takiego
[code]<script type="text/ javascript">
$(document).ready
(function(){
$('form').submit
(function(){
var czas = $('#data').val
();
$.post
("test.php", { 'czas': czas }, function
(data){[/code]
i nie wiem co dalej wstawić żeby mi się
wykonało i wyświetliło w divie o id np log
z pliku test.php zmienna $hmm
[code]$sel = $db->query("SELECT * FROM
tabela WHERE data=$_POST['data']");
while($r = $sel->fetch_assoc()){
$hmm .= $r['cos'];
}[/code] oczywiście to wszystko bez,przeladowywania całej strony

p.s. niezbyt znam ajax'a

1
  1. Zły dział - Java to język zupełnie inny niż JavaScript.
  2. Popraw formatowanie pierwszego fragmentu kodu - trudno się go czyta (poprzez formatowanie mam na myśli wcięcia, tabulacje na początku każdej linii).

Twój skrypt PHP niczego nie zwraca. Zapewne na końcu powinieneś mieć coś w stylu:

echo $hmm;

no chyba, że po prostu nie wkleiłeś całego kodu, wtedy ok.

W javascript, w funkcji (3 argument przy $.post, ta funkcja nazywa się callback i tak będę ją nazywał w dalszej części postu jeśli zajdzie taka potrzeba) otrzymujesz treść zwróconą przez zapytanie - jest ona zapisana do zmiennej 'data' (w zasadzie jest przypisana do dowolnej zmiennej będącej pierwszym argumentem callback'u). W związku z tym, wystarczy, że wrzucisz sobie do tej funkcji np:

alert(data);

i już zobaczysz, że Twój skrypt dostał odpowiedź zwróconą przez zapytanie (pod warunkiem, że w PHP masz to echo i ten skrypt w PHP cokolwiek rzeczywiście zwraca).

Uzbrojony w taką wiedzę możesz przejść do ostatniej części problemu - jak zapisać coś do diva o id 'log'.
Biorąc pod uwagę, że używasz jQuery to możesz to zrobić tak:

$('div#log').html("tutaj jest dowolna treść, może to być ZMIENNA zawierająca jakąś treść, w szczególności odpowiedź z zapytania");

gdzie funkcja o nazwie dolar - $() - przyjmuje jako argument selektor (tj. napis wskazujący na jakiś element w DOM) na zasadzie:
jeśli jest to po prostu wyraz - szuka elementu o takim tagu (np. div, span, input, textarea)
jeśli przed wyrazem jest #, to szuka elementu o takim id (np. #log szuka elementu o id log)
jeśli przed wyrazem jest ., to szuka elementu o takim class
no i można to łączyć - np. div#log szuka diva o id = log.
Oczywiście możliwości szukania jest dużo więcej, ale to sobie poczytaj na stronie jQuery.

Z ciekawostek dodam, że za pomocą $() możesz również utworzyć nowy element - ale o tym też sobie poszukaj na googlu.

0

Przepraszam pisałem ten temat w nocy i tak jakoś źle przeczytałem
Dziękuję @_mk_ za wytłumaczenie teraz mam coś takiego
[code]

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $('form').submit(function(){ var czas = $('#czas').val(); $.post("test.php", { 'czas': czas }, function(data){ $('div#divek').html(data); }, "json"); }); });  </script>
<form action="" method="post"> <input id="czas" name="czas">
<input type="submit" value="xd"> </form> [/code]

i plik test.php

[code]

<? echo $_POST['czas']; ?>

[/code]

plik test.php oczywiście testowy

i coś nie działa w ogóle nic się nie wyświetla

0

Zakładam, że parametr w którym podałeś "json" zakłada, że odpowiedź będzie w json, a zwracasz tylko stringa. Zmień typ zwrotki.

0

Dałem "string" i nic się nie wyświetla -_-
Dodam jeszcze że podałem wcześniej całą zawartość pliku index.html i test.php

0
Majcon napisał(a):

Dałem "string" i nic się nie wyświetla -_-
Dodam jeszcze że podałem wcześniej całą zawartość pliku index.html i test.php

a kto powiedział albo skąd przypuszczenie że miałeś wpisać "string"?
czytaj dokumentacje

http://api.jquery.com/jQuery.post/ napisał(a)

The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html).

najlepiej usuń w ogóle ten parametr, wtedy się będzie domyślać i działać w każdym przypadku

0

Przepraszam was ale ja nigdy nie używałem ajaxa czy tam javascript tylko php więc niezbyt znam te dwa języki ale chciałbym się nauczyć ( wiem wiem że są kursy w necie ale czy napisany kurs lepiej wytłumaczy niż człowiek ? )

0

Kursy też pisał człowiek przecież..
A kiedy czegoś nie wiesz to:

  1. dokumentacja
  2. google
  3. forum
    pomyśl ile swojego własnego czasu zaoszczędzisz nie czekając kilka godzin albo dni na odpowiedź! ;)
0

Działa już udało sie;D tylko tak teraz myślę czy można to zrobić w jednym.pliku ?

0

Stwierdzam jednak że robienie tego było bez sensu ponieważ strasznie wolno się to wykonuje i w ogóle ale dzięki wszystkim za szybkie odpowiedzi

1 użytkowników online, w tym zalogowanych: 0, gości: 1