Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

[AJAX][PHP][MySQL] Przesłanie danych w obie strony



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> ECMAScript
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
thecov13
Gość





PostWysłany: Pon Cze 08, 2015 3:07 pm  OP    Temat postu: [AJAX][PHP][MySQL] Przesłanie danych w obie strony Odpowiedz z cytatem Pisownia

Witam!

Już od kilku godzin nie mogę poradzić sobie z problemem odnośnie przesłania danych i odpowiedzi.
Co chcę osiągnąć? Użytkownik ma na stronie formularz w którym uzupełnia 2 zmienne. Następnie klika wyszukaj i bez przeładowania strony dostaje dodatkowe informacje pobrane z bazy danych na podstawie tego co wpisał.

I teraz pytanie jak to zrobić, najlepiej przykład, bo dzięki temu szybciej do głowy mi wchodzi.

Mam jakąś tam część formularza:
Kod:

<input type="text" id="name" name="name" placeholder="Name" required/>
<input type="text" id="number" name="number" placeholder="Number" required/>
<input type="button" name="next" class="search" value="Search" />


po naciśnięciu buttonu przechodzi do następnej zakładki bez przeładowania. A w niej chciałbym mieć pobrane dane. Najpierw przesyłam ajaxem do php:

Kod:
$(".search").click(function () {
            name = $("#name").val();
            number = $("#number").val();

            var data = 'name=' + name + '&number=' + number;

            jQuery.ajax(
                {
                    type: "POST",
                    url: "search.php",
                    data: data,
                    error: function () {
                    },
                    success: function () {
                    }
                }
        );

Następnie odbieram dane w php, łącze się z bazą, pobieram interesujące mnie rzeczy, przypisuje sobie je do zmiennych

Kod:
$name = $_POST['name'];
[i]...połaczenie z bazą...[/i]
$result = mysql_query("SELECT `Age` from user where `name` = '".$name."'");
$row = mysql_fetch_row($result);


i tutaj znak zapytania, bo nie wiem co dalej. Jak teraz przesłać te dane z powrotem do js, żebym tam mógł przypisać sobie:

Kod:
var age = [b]pobrana z bazy wartość[/b]
$(".age").html(age);



Proszę o jakieś wskazówki, podpowiedzi. Z góry ogromne dzięki!
Powrót do góry
Luke



Dołączył: 17 Cze 2007
Posty: 1891
Skąd: Szczecin

PostWysłany: Pon Cze 08, 2015 8:44 pm      Temat postu: Odpowiedz z cytatem Pisownia

W PHP zwracasz poprzez echo zmienne w postaci JSON-a i potem wykorzystujesz je w JS.

http://php.net/manual/en/function.json-encode.php
https://www.lennu.net/jquery-ajax-example-with-json-response/

_________________
Moje projekty | Tani hosting
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
kchteam



Dołączył: 07 Lis 2014
Posty: 7
Skąd: Tychy

PostWysłany: Sro Cze 10, 2015 9:50 am      Temat postu: Odpowiedz z cytatem Pisownia

Rozszerzając to co napisał @Luke – proponuję ajaxa ustawić tak, żeby korzystał z formatu JSON, a po stronie serwera skorzystać z funkcji json_encode().

JS:
Kod:

jQuery.ajax({
    type: 'post',
    url: 'search.php',
    dataType: 'json',
    data: data,
    error: function(response) {
        // w zmiennej response jest odpowiedź z serwera w postaci tekstu
        // ten kod zostanie uruchomiony, gdy jQuery nie będzie w stanie sparsować odpowiedzi z serwera jako JSON
                
        alert('Wystąpił błąd komunikacji z serwerem'); // raczej zalecam wyświetlić błąd w bardziej elegancji sposób – alert tylko poglądowo
    },
    success: function(response) {
        // w zmiennej response jest gotowy obiekt JSON

        console.log(response); // to po to, żebyś mógł w konsoli zobaczyć co Ci przyszło, w ostatecznym kodzie nie powinno tego być

        $('.age').html(response.age);  
    }
})



PHP:
Kod:

$row = mysql_fetch_row($result);
echo json_encode($row);



Ważne aby pliki po stronie serwera były kodowane w utf8 – metoda $.ajax() korzysta domyślnie z utf8, jeśli po stronie serwera byłoby ISO-8859-2 to trzeba wtedy odpowiedź przekonwertować do utf8, chyba tak by to było:
Kod:

iconv('ISO-8859-2', 'UTF-8', json_encode($row))



[Adam]

_________________
Jeden zespół, tysiące możliwości! Dołącz do nas: itteam@kredyty-chwilowki.pl
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> ECMAScript Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.10024 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |