Strona 1 z 2

$.get() - obróbka danych wprowadzonych przez użytkownika

Napisane: czwartek, 19 kwietnia 2012, 13:31
przez neytiri
Czy ktoś może mi pomóc zrozumieć mechanizm działania $.get() czy $.post()?

Chciałabym zrobić dynamiczne podpowiedzi w moim tpl. mam :

Code: Zaznacz cały

<input type=text name="tytul" id="tytul" value='{$tytul|default:""}' onkeyup="pokaz_dane();" style="width:150px;">
W js :

Code: Zaznacz cały

function pokaz_dane()
{
$.post("index.php",function(data){
alert(data);
});
}
po wprowadzeniu czegoś tam do input'a pokazuje mi prawie cały html strony - tu też pytanie dlaczego nie pokazuje całości, jest jakieś ograniczenie na ilość danych w tym okienku alert?

Wiem, że aby przeczytać dane wprowadzone przez użytkownika mogę zrobić coś takiego :

Code: Zaznacz cały

var tytul= $("input[name=tytul]").val(); alert (tytul);
Nie rozumiem, dlaczego jak próbuję odczytać dane w php, to nic jednak nie widzę :

Code: Zaznacz cały

function pokaz_dane()
{
$.post("index.php",{"cos":4 },function(data){
alert(data);
});
}
A w index.php :

Code: Zaznacz cały

echo $_POST['cos'];
Wyświetla mi pustą Array!
Robię pewnie jakiś podstawowy błąd, ale nie wiem gdzie.

Re: $.get() - obróbka danych wprowadzonych przez użytkownika

Napisane: czwartek, 19 kwietnia 2012, 13:43
przez Morfidon
pod data znajduje się to co zwróci URL w tym wypadku index.php, tzn. w takim wypadku $_POST['tytul'] jest tam źle obsługiwane?

Re: $.get() - obróbka danych wprowadzonych przez użytkownika

Napisane: czwartek, 19 kwietnia 2012, 14:06
przez neytiri
W pliku index.php mam dokładnie :

Code: Zaznacz cały

echo $_POST['cos'];
,
bo rozumiem, że uzycie :

Code: Zaznacz cały

$.post("index.php",{"cos":4 },function(data){
alert(data);
});

wrzuca mi do tablicy $_POST['cos'] wartość 4?

Re: $.get() - obróbka danych wprowadzonych przez użytkownika

Napisane: czwartek, 19 kwietnia 2012, 14:35
przez Morfidon
Teoretycznie tak powinno być. A zamień post na get w pliku gdzie masz js oraz w pliku index.php. Następnie odpal index.php?cos=10 i powiedz czy wypisuje 10.

Re: $.get() - obróbka danych wprowadzonych przez użytkownika

Napisane: czwartek, 19 kwietnia 2012, 15:35
przez neytiri
Tak , wyświetla.

Re: $.get() - obróbka danych wprowadzonych przez użytkownika

Napisane: czwartek, 19 kwietnia 2012, 15:49
przez neytiri
A i jeszcze jak spróbowałam przesłać to url :

Code: Zaznacz cały

$.get("index.php?cos=10",function(data){
alert(data);
});
$_GET jest ciągle puste.

Re: $.get() - obróbka danych wprowadzonych przez użytkownika

Napisane: czwartek, 19 kwietnia 2012, 16:17
przez Morfidon
$.get się przesyła tak samo jak $.post. Myślę, że wina leży po stronie tego, że nie zdąży odebrać odpowiedzi, a już próbuje ją wyświetlać. Spróbuj skorzystać z metody ogólniejszej tj. $.ajax i ustaw async na false.

Re: $.get() - obróbka danych wprowadzonych przez użytkownika

Napisane: czwartek, 19 kwietnia 2012, 19:55
przez neytiri
A czy można inaczej niż json'em przesyłać dane do php?

Re: $.get() - obróbka danych wprowadzonych przez użytkownika

Napisane: czwartek, 19 kwietnia 2012, 21:21
przez Morfidon
Nigdzie nie jest napisane, że ma być to Json.

Re: $.get() - obróbka danych wprowadzonych przez użytkownika

Napisane: piątek, 20 kwietnia 2012, 22:22
przez neytiri
Ok, To możesz mi wytłumaczyć, jak w inny sposób odebrać dane z js?

Spróbuję to opisać jak ja to rozumiem, więc jak coś to proszę o poprawę :

User wpisuje na stronie jakieś dane np. do
<input type=text id=dane>

W js piszę funkcję do sczytanie tych danych - i tu też nie wiem pod co się podczepić, czy powinna to być funkcja anonimowa?
Czyli w js możemy dojść do tego tekstu :

var dane = $("input[name=dane]").val();

I potem za pomocą $.post , get lub ajax przesłać je do php.
Nie wiem czy dobrze rozumiem?
$.post(1,2,3)
1- podaje plik lub ścieżkę do pliku z którego ciągnę dane?
2- tu mogę przesłać dane do php - tylko jak jak odczytać w php? Gdzie one będą w tablicy $_POST?
3- funkcja do obslugi?

Nie wiem, czy to niezbyt zagmatwane, jak coś to napisz, które ewentualnie lekcje powinnam jeszcze przerobić z js lub jquery, aby to zakumać?