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 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"
});