#php #javascript #jquery #dom
#php #javascript #jquery #dom
Вопрос:
У меня есть вызов jQuery для некоторого PHP, который работает нормально. Что я хотел бы сделать, так это вывести новое содержимое определенного div прямо из php, используя оператор echo. Возможно ли это?
Раньше я возвращал новое содержимое div, используя кодировку JSON, подобную этой:
$rows = array();
while($r = mysql_fetch_assoc($result))
{
$rows[] = $r;
}
echo json_encode($rows);
Но теперь я хочу вызвать функцию PHP, которая используется в другом месте для создания содержимого div, и я хочу, чтобы это было единственное место, где создается это содержимое div.
Возможно ли сделать то, что я пытаюсь?
Спасибо!
Комментарии:
1. Что вы подразумеваете под «функцией PHP, которая используется в другом месте для создания элементов div»?
Ответ №1:
Да, это возможно. Помните, что параметр вашей success
функции jQuery содержит все выходные данные вашего внутреннего скрипта. Просто замените html нужного контейнера содержимым параметра.
PHP (someUrl.php ):
echo('<div>Hello World!</div>');
JavaScript:
var YourDataString = '';
$.ajax({
type: 'GET',
url: 'someUrl.php',
data: YourDataString,
success: function(html) {
$('#someContainer').html(html);
}
});
Это поместит ‘<div> Hello World</div>’ внутри элемента с идентификатором: someContainer
Редактировать
Когда у меня возникают проблемы (например, что-то не появляется) с AJAX-запросами, мне помогает, если я посещаю страницу, которую я вызываю напрямую, чтобы увидеть, какой вывод генерируется. Если я не включаю отчет об ошибках и не вижу ничего, кроме белого экрана, то я знаю, что в моем PHP есть ошибка, и из-за этого ничего не выводится.
Вы можете попробовать включить сообщение об ошибках в своем скрипте, чтобы узнать, есть ли ошибка. Если вы не можете его найти, прокомментируйте весь свой скрипт и поместите echo('I am here!');
туда один и посмотрите, попадет ли он на вашу страницу. Если это так, то вы знаете, что где-то в вашем PHP есть ошибка.
Вы также можете посмотреть на консоль ошибок вашего браузера, чтобы узнать, выдает ли ваш JavaScript какие-либо ошибки. Сначала попробуйте более упрощенный пример, если вы еще не совсем понимаете, о чем идет речь. Приведенный выше код должен работать.
Комментарии:
1. я думаю, что это не совсем сработало. В php я делаю echo для всего, что я хочу видеть в JavaScript в этой переменной html, но я думаю, что ничего не отображается.
2. Имеет ли значение разница между отправкой запросов get и post?
3. Если в вашем PHP есть ошибка, ничего не будет возвращено обратно. Если вы используете Firebug, вы можете проверить запрос, чтобы узнать, выдает ли он ошибку сервера 500 (или вы можете попробовать перейти к вашему PHP-файлу напрямую)
4. Разница между GET и POST в этом случае (в некоторой степени) семантическая. Поскольку вы получаете данные с сервера и ничего не меняете , GET подходит (если вы что-то не меняете и ничего не сказали)
5. Я see…so использование echo в PHP, похоже, не вносит никаких изменений в html, который я хочу изменить. Вы знаете, как это отладить? Я знаю, что могу сделать запрос для нужных мне элементов, перебирать их и повторять их …. но после этого я не знаю, как сделать так, чтобы отображались данные echo-ed.
Ответ №2:
Вы можете использовать jquery.ajax для обновления содержимого из файла php:
Ответ №3:
$rows = array();
while($r = mysql_fetch_assoc($result))
{
$rows[] = $r;
}
echo json_encode($rows);
die();enter code here
you need to die() or exit