Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ajax] wysylanie i odbieranie danych
Forum PHP.pl > Forum > Przedszkole
sepuku
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.
b_chmura
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');"
sepuku
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.
b_chmura
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
sepuku
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"
}
b_chmura
"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
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.