Jestem nowy w użyciu jQuery do obsługi AJAX i napisałem podstawowy skrypt, aby uzyskać podstawy w dół. Obecnie wysyłam żądanie AJAX do tego samego pliku i chcę wykonać dodatkowe przetwarzanie na podstawie wyników tego wywołania AJAX.Callback żądania AJAX za pomocą jQuery
Oto mój kod:
**/*convertNum.php*/**
$num = $_POST['json'];
if (isset($num))
echo $num['number'] * 2;
?>
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
td {border:none;}
</style>
</head>
<body>
<table width="800" border="1">
<tr>
<td align="center">Number To Send<br /><input type="text" id="numSend" size="40%" style="border:2px solid black;"></td>
<td align="center">Number Returned<br /><input type="text" id="numReturn" size="40%" readonly></td>
</tr>
<tr><td align="center" colspan="4"><input type="button" value="Get Number" id="getNum" /></td></tr>
</table>
<script>
$(document).ready(function() {
$('#getNum').click(function() {
var $numSent = $('#numSend').val();
var json = {"number":$numSent};
$.post("convertNum.php", {"json": json}).done(function (data)
{
alert(data);
}
);
});
});
</script>
</body>
</html>
Oto odpowiedź dostanę jeśli mogę przesłać numer '2':
4
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
td {border:none;}
</style>
</head>
<body>
<table width="800" border="1">
<tr>
<td align="center">Number To Send<br /><input type="text" id="numSend" size="40%" style="border:2px solid black;"></td>
<td align="center">Number Returned<br /><input type="text" id="numReturn" size="40%" readonly></td>
</tr>
<tr><td align="center" colspan="4"><input type="button" value="Get Number" id="getNum" /></td></tr>
</table>
<script>
$(document).ready(function() {
$('#getNum').click(function() {
var $numSent = $('#numSend').val();
var json = {"number":$numSent};
$.post("convertNum.php", {"json": json}).done(function (data)
{
alert(data);
}
);
});
});
</script>
</body>
</html>
Oczywiście jestem zainteresowany tylko odbieranie i korzystając z numeru "4", stąd moje pytanie: Jaki jest najlepszy sposób, aby dokładnie określić, jakie dane chcę zwrócić?
Niektóre myśli miałem:
- owijania całe HTML wewnątrz if (czyli jeśli $ num isset, zrobić HTML nie wyjściowego; wyjście innego HTML), ale potem mam echo HTML , a wolałbym tego nie robić.
- Konfigurowanie oddzielnego skryptu PHP w celu odebrania wywołania AJAX: To było to, co zrobiłem pierwotnie i działa dobrze. Jednak jestem zainteresowany zatrzymaniem wszystkiego w jednym pliku i chciałem zbadać możliwe sposoby zrobienia tego.
Jestem pewien, że istnieje elegancki sposób na zrobienie tego. Dzięki za wszelkie sugestie!
dlaczego chcesz zachować wszystko w jednym pliku. Powinieneś strukturalizować swój kod. W przeciwnym razie otrzymasz bardzo lage z mylącym kodem. A co z css i javascript? Czy chcesz mieć to wszystko również w jednym pliku? Możesz to zrobić, ale myślę, że to nie byłoby eleganckie. – steven
Steven - wystarczy. Zapotrzebowanie, które chcę zbadać, zachowując wszystkie wywołania w jednym pliku, polega na tym, że pracuję nad projektem, w którym będziemy mieć wiele stron php, wykonujących połączenia AJAX, i próbuję ustalić najlepsze praktyki dotyczące obsługi tej sprawy. Teraz powiem, że każdy skrypt, który używa takiego wywołania AJAX, będzie miał odpowiedni plik .inc include - być może najlepiej będzie wykonać wywołanie POST do tego pliku, zamiast używać tej samej strony lub innej scenariusz. Jestem teraz w fazie eksploracji, a odpowiedzi, które otrzymuję, są ogromnie pomocne. – JRizz