Chcę mieć coś w rodzaju małej wyszukiwarki dla sekcji FAQ na mojej stronie. Wszystko, co robi, to wyszukiwanie terminu w SLQ_DB po naciśnięciu przycisku.

Chcę wyświetlić pytanie i odpowiedzi w dwóch oddzielnych elementach div. Dlatego mam $data i $data1, które należą do div.

$('input#name-submit').on('click',function()
{
    var name = $('input#name').val();
    //alert(name);
    if($.trim(name) != "")
    {
        $.post('ajax/name.php',{name:name},function(data, data1)
            {
                $('div#name-data').html(data);
                alert(answer);
                $('div#name-data1').html(data1);

            });
    }
});

Ale kiedy wcisnę enter, drugi div pokazuje "sukces". Ale pierwszy zawiera dane i dane1. Kiedy piszę function(data1, data) w pliku js, data1 zawiera wszystkie informacje, a dane to po prostu „sukces”.

Co tu się dzieje?

1
Felix Kunz 5 listopad 2018, 01:17

1 odpowiedź

Najlepsza odpowiedź

Funkcja echo w PHP wypisuje zawartość zmiennej do treści odpowiedzi. To ciało jest „ciągiem”, który otrzymuje Twoja aplikacja internetowa.

Załóżmy, że masz taki kod:

<?php
$var1 = "hello";
$var2 = "world";
echo $var1;
echo $var2;
?>

Wynikowa treść odpowiedzi będzie wyglądać tak: helloworld.

Załóżmy teraz, że to jest twój kod JS:

$.post('ajax/name.php',{name:name},function(data) {
    console.log(data); // "helloworld"
});

JQuery przekaże treść odpowiedzi do zmiennej data, która teraz zawiera heloworld.

Musisz jakoś oddzielić poszczególne zmienne w treści odpowiedzi, np. za pomocą JSON.

Pierwszym krokiem jest zakodowanie danych na serwerze, to takie proste:

<?php
echo json_encode(["var1"=>$var1, "var2"=>$var2]);
?>

Spowoduje to utworzenie treści odpowiedzi, która wygląda tak: {"var1":"hello","var2":"world"}.

Następnym logicznym krokiem jest zdekodowanie tego JSON za pomocą JavaScript:

$.post('ajax/name.php',{name:name},function(data) {
    var res = JSON.parse(data);
    console.log(res.var1); // "hello"
    console.log(res.var2); // "world"
});
2
user9930257user9930257 5 listopad 2018, 02:29