Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ajax] wysylanie i odbieranie danych
-sepuku-
post 10.11.2007, 01:14:33
Post #1





Goście







Witajcie. Chcialbym za pomoca ajaxa wyslac dane z formularza do pliku przetwarzajacego *.php i odebrac juz przetworzone dane i wstawic z powrotem do formularza.

Probowalem z biblioteka advAjax, lecz na probach narazie sie skonczylo. Chcialem zrobic formularze, ktore wykonywalyby sie bez przeladowania, akcja w tle i otrzymac dane zwrotne.
Go to the top of the page
+Quote Post
b_chmura
post 10.11.2007, 11:04:48
Post #2





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


słabo próbowałeś...

Myślę ze z wysyłaniem danych do pliku nie masz problemu, jeśli chodzi o odbiór tworzysz funkcję która wczytuje plik do div'a i powtarzasz ją co x sekund (setInterval('nazwa_funkcji', 'czas');"
Go to the top of the page
+Quote Post
-sepuku-
post 10.11.2007, 14:08:17
Post #3





Goście







Tak, z wysylaniem nie mam problemu, lecz troche sie glowie nad ich przyjeciem. Zastosowalem prosty kod ajaxa
Kod
function umiesc(b)
{
    var wynik = eval('(' + b + ')');
    for (var a in wynik) $(a).innerHTML = wynik[a];
}

function wyslij() {
advAJAX.get({
    url: "page.php",
    onSuccess : function(obj) { umiesc(obj.responseText); },
    onError : function(obj) { alert("Error: " + obj.status); }
});
}


Po kilku probach doszedlem do wniosku ze zwracany tekst w zmiennej obj.responseText to tekst, ktory wyswietlam w pliku php np funkcja echo. W takim razie musialbym przygotowac odpowiedni string dla tej zmiennej cos w stylu jakis_div=wartosc. Lecz dostaje komunikat, ze jest to skladniowo niepoprawne, nawet probujac wyslac stringa w postaci "jakis_div":"wartosc" dostaje taki sam komunikat, nie mam juz pomyslow.
Go to the top of the page
+Quote Post
b_chmura
post 10.11.2007, 15:34:08
Post #4





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


Kod
<html>
<head>
<title>strona</title>
<script>
function view(adres, element)
{
  advAJAX.get({url: adres, onSuccess : function(obj) {document.getElementById(element).innerHTML = obj.responseText; }})
}
setInterval('view(\'jakis_plik.php\', \'id_jakiegos_diva\')', 1000);
</script>
<body>
<div id="id_jakiegos_diva"></div>
</body>
</html>

tym sposobem na stronie będziesz na bieżąco wyświetlał zawartość pliku jakis_plik.php który może np pobierać dane z bazy
Go to the top of the page
+Quote Post
-sepuku-
post 10.11.2007, 23:14:08
Post #5





Goście







W Twoim przykladzie odbior danych jest, ale gdzie je wysylasz? Formularz jest po to by przekazac jakies dane... winksmiley.jpg

Wydaje mi sie, ze zrobilem juz wiekszosc:
Kod
function umiesc(b)
{
    var wynik = eval('(' + b + ')');
    for (var a in wynik) document.getElementById(a).value = wynik[a];
}

function wyslij()
{
    var s = '';
    for (i=0; i<document.forms[0].length; i++) s += document.forms[0].elements[i].name + '=' + document.forms[0].elements[i].value + '&';

    advAJAX.post({
        url: 'page.php',
        queryString : s,
        onSuccess : function(obj) { umiesc(obj.responseText); },
        onError : function(obj) { alert('Error: ' + obj.status); }
    });
}


Wysylam wartosci wszystkich pol formularza metoda POST do skryptu page.php, obrabiam i wstawiam spokojnie w divy czy tak jak w tym przypadku w pola tekstowe. Wszystko dziala, zmiany widoczne itd. Martwi mnie tylko blad, ktory pojawia sie w konsoli bledow w ff o tresci: nieprawidlowo sformowany. Dodam, ze z php przesylam stringa o takiej postaci:
Kod
{
"w1":"ddd",
"w2":"ccc",
"w3":"ggg"
}
Go to the top of the page
+Quote Post
b_chmura
post 10.11.2007, 23:43:55
Post #6





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


"Tak, z wysylaniem nie mam problemu, " to mi dało tylko jedno do zrozumienia...

Kod
<html>
<head>
<title>strona</title>
<script>
function view(adres, element)
{
  advAJAX.get({url: adres, onSuccess : function(obj) {document.getElementById(element).innerHTML = obj.responseText; }})
}
function send(element)
{
  advAJAX.assign(document.getElementById(element),{});
}
setInterval('view(\'jakis_plik.php?act=view\', \'id_jakiegos_diva\')', 1000);
</script>
<body onload="send('id_jakiegos_form');">
<div id="id_jakiegos_diva"></div>
<br />
<form action="jakis_plik.php?act=save" id="id_jakiegos_form" method="post">
  <input type="text" name="tresc" /><br />
  <input type="submit" value="wyslij" />
</form>
</body>
</html>


plik jakis_plik.php
  1. <?php
  2. $act = $_GET['act'];
  3. if($act == 'view')
  4. {
  5. //wyświetlasz jakieś dane bądź to z bazy czy pliku czy jako zwykły tekst
  6. }
  7. elseif($act == 'save')
  8. {
  9. //zapisujesz jakieś dane bądź to do bazy czy pliku
  10. }
  11. ?>


mam nadzieje ze zrozumiesz
pisane z palca możliwe literówki

pozdrawiam
Chmura

Ten post edytował b_chmura 10.11.2007, 23:46:54
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 16:13