1

Тема: jQuery отправить POST запрос и получить данные в HTML

Для примера у нас будет список форумов и при выборе любого из них будут подгружаться темы соответствующего форума.

Итак, вначале форма выпадающего списка форумов:

         <div class="sf-set set">
            <div class="sf-box select">
               <label for="fld"><span>Форумы</span><small>Выбрать форум</small></label><br />
               <span class="fld-input"><select id="rss_forum_id" name="rss_fid" onchange="getForumId(this.value);">
                  <option value="0" selected="selected">Выбрать форум из списка</option>
<?php
$forum_name = array();
$query = array(
   'SELECT'   => 'id, forum_name',
   'FROM'      => 'forums',
);
$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
while ($forums_info = $forum_db->fetch_assoc($result))
   $forum_name[$forums_info['id']] = $forums_info;

foreach ($forum_name as $forums_info)
   echo "\t\t\t\t\t\t\t\t".'<option value="'.$forums_info['id'].'">'.$forums_info['forum_name'].'</option>'."\n";
?>
               </select></span>
            </div>
         </div>

Затем блок для появления в нем списка топиков:

<div id="result_div_id"></div>

Сам скрипт:

<script>
function getForumId(fid)
{
   jQuery.ajax({
      url:   "topics.php",
      type:   "POST",
      dataType: "html",
      data: jQuery("#rss_forum_id").serialize(),
      success: function(response){
         document.getElementById("result_div_id").innerHTML = response;},
      error: function(response){
         document.getElementById("result_div_id").innerHTML = "Ошибка при отправке формы";}
   });
}
</script>

Ну и последний штрих, файл откуда и будем тянуть запросы, т.е. список тем.
Итак содержимое файла

<?php 
//укажите правильно относительный путь!!!
if (!defined('FORUM_ROOT')) define('FORUM_ROOT', '../../../');

define('FORUM_SKIP_CSRF_CONFIRM', 1);
require FORUM_ROOT.'include/common.php';
header('Content-type: text/html; charset=utf-8');

if ($forum_user['g_id'] != FORUM_ADMIN)
   message($lang_common['No permission']);

if(isset($_POST['rss_fid']))
{
   $fid = intval($_POST['rss_fid']);

   $topics = array();
   $query = array(
      'SELECT'   => 'id, subject',
      'FROM'      => 'topics',
      'WHERE'      => 'forum_id='.$fid
   );
   $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);

   echo '<div class="sf-set set"><div class="sf-box select"><label for="fld"><span>Темы</span><small>Выбрать тему</small></label><br /><span class="fld-input"><select id="fld" name="rss_tid"><option value="0" selected="selected">Тема не выбрана</option>';

   while ($topic_info = $forum_db->fetch_assoc($result)) 
      echo '<option value="'.$topic_info['id'].'">'.forum_htmlencode($topic_info['subject']).'</option>'."\n";

   echo '</select></span></div></div>';
}

require FORUM_ROOT.'footer.php';

Это самый примитивный способ, чтобы получить данные по POST запросу

Email: punbb.info@gmail.com