#php #jquery #ajax #forms
#php #jquery #ajax #формы
Вопрос:
Я хотел бы иметь следующее:
Пользователь отправляет форму щелчком мыши ( index.php
), ввод формы обрабатывается внешним PHP-файлом ( search.php
), а результаты публикуются на исходной странице ( index.php
) в div.
Я уже собрал большую часть кода. Он отправляет форму одним щелчком мыши и отправляет ее PHP-скрипту.
Что мне было бы нужно сейчас, так это чтобы результат из PHP-скрипта возвращался на исходную страницу ( index.php
).
Вот мой код на данный момент:
function submit() {
$(function() {
var id = "id";
var dataString = 'id=' id;
$.ajax({
type: "POST",
url: "inc/search.php",
data: dataString,
success: function() {
goToByScroll("result");
$('#result').html("<br><br><br><br><br><br><br><br><br><br><
div class='center'><img src='img/loader.gif' /></div>").hide().fadeIn(2500, function() {
$('#result').html("Finished");
});
}
});
return false;
});
}
Мой PHP-файл (для тестирования):
<?php function safe($value)
{
htmlentities($value, ENT_QUOTES, 'utf-8');
return $value;
}
if (isset($_POST['id'])) {
$id = safe($_POST['id']);
echo ($id);
}
elseif (!isset($_POST['id'])) {
header('Location: error?id=notfound');
} ?>
Я хотел бы, чтобы результаты от search.php
(в данном случае «id») были опубликованы в #result, но я не могу понять, как: S
Ответ №1:
Я думаю, у вас есть почти все. Функция обратного вызова, которая у вас есть под success
, нуждается в аргументе, который обозначает результаты из search.php
success: function(res) {
goToByScroll("result");
$('#result').html("<br><br><br><br><br><br><br><br><br><br><div class='center'><img src='img/loader.gif' /></div>").hide().fadeIn(2500, function() {
$('#result').html(res "<br /><br /> Finished");
});
}
res
все ли выводится search.php
. Echo, данные за пределами тегов php и т.д. Все, что вы бы увидели, если бы загрузили search.php
само себя.
Я не знаю, хотели ли вы, чтобы ‘Finished’ все еще было там. Удалите это, если не хотите.
Комментарии:
1. Это работает на 100% 🙂 и самое приятное: мне просто пришлось скопировать и вставить это! Большое спасибо!
2. хах, я добавил только около шести символов к вашему, вы могли бы просто ввести их. рад, что это сработало
Ответ №2:
Добавьте параметр в вашу функцию успеха, например:
success: function(param) { ... }
Параметр — это строка, которая представляет собой ВЕСЬ вывод вашего серверного скрипта. Вы можете установить для этого значение, каким хотите, и поместить его внутри какого-либо элемента
$("#element").html(param);
Комментарии:
1. привет, наблюдатель, спасибо за ваш быстрый ответ и потраченное время! я только что включил свой тестовый скрипт php. не могли бы вы сообщить мне, что я должен добавить в приведенный выше пример, чтобы отобразить мои результаты на index.php ?
2. Все, что вы повторяете в своем php-скрипте на стороне сервера, будет установлено в переменную param в функции успеха. Просто повторите идентификатор, если он просто не найден
echo("ID Not Found");
. Затем в функции успеха выполните:$("#results").html(param);
и это должно сработать.3. Большое спасибо, ребята! Я был почти у решения, когда jon_darkstar предложил, для меня, более простое решение! Спасибо, что уделили тебе время!!