- Как вызвать реальную функцию в скрипте PHP?
- Нужно ли мне возвращать XML? Или есть способ просто вернуть возвращенное значение?
Ну, вы не вызываете реальную функцию. То, что вы хотите сделать, это передать переменные с помощью GET, то есть, добавив их к URL-адресу, например file_name.php?var1=this&var2=that
, чтобы передать var1 «this» и var2, равные «that». Вы получаете их в файле PHP с $_GET['this']
и $_GET['that']
. Все, что PHP выводит на страницу через echo
, print_r
и т. Д., Затем отправляется обратно в объект запроса как часть его свойства responseText
.
Вы только что установили url
в request.open
для URL на своем сайте. Например, в вашем файле .js:
request.open("GET", "answer_me.php?hike_id=" + hike_id, true);
А в вашем .php файле:
<?php
$hike_id = $_GET['hike_id'];
if ($hike_id < 5) {
echo "true"; // echo true would return "1", BTW
} else {
echo "false"; // echo false would return nothing
}
Обратите внимание, что это просто вернет строковое значение в request.responseText
из false, таким образом, вы можете сделать это:
var result = request.responseText;
if (result === "true") {
...
document.getElementById("success").style.display = "block";
...
} else {
...
document.getElementById("success").style.display = "none";
...
}
Вам не нужно, чтобы это был XML, тем более что похоже, что вы на самом деле не используете цикл (тем же самым трем элементам DOM присваиваются значения каждый раз).
И, честно говоря, для AJAX я бы рекомендовал использовать фреймворк, такой как jQuery (или YUI, хотя я не считаю его AJAX интуитивным). Весь ваш код будет выглядеть так:
var $success = $("#success");
var $error = $("#error");
function cancelHikeCallback(data) {
var is_success = (data === "true");
$success.toggle(is_success);
$error.toggle(!is_success);
}
function cancelHike(hikeIdToSend) {
$.get("/db/cancel_hike.php", {hike_id: hikeIdToSend}, cancelHikeCallback);
}
IMO-вещи, такие как jQuery $.ajax
($.get
- это специализированная форма $.ajax
), упрощают чтение и отладку этого материала.
Пример jsFiddle