Как получить мой php-код jQuery AJAX для обновления div?

#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:

http://api.jquery.com/jQuery.ajax/

Ответ №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