Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > При innerHTML не видно нового контента


Автор: supercelt 24.9.2008, 10:49
У меня сделано так, что контент подгружается аяксом в див. 

главная страница
Код

<a href="#" onclick="show_reg_form()">Регистрация</a>
<div id="main_content">
Контент главной стр. по умолчанию
<div>


При нажатии на ссылку, вместо главного контента должна появиться форма регистрации

функция обработки клика для отправки в аякс
Код

function show_reg_form()
{
var show = new JsHttpRequest();
show.onreadystatechange = function() 
  {                
    if(show.readyState == 4) 
    {
    getID('main_content').innerHTML = show.responseJS.show_otvet;
    hideload();
    }
  }
show.open('POST', 'registration.php', true);// куда отправлять
show.send({action:'registration'});
showload();
}


Обработка аякса в пхп
Код

<?php
require_once('functions/functions.php');
require_once('lib/JsHttpRequest/JsHttpRequest.php'); //подклучаем файл
$Js = new JsHttpRequest('windows-1251'); //кодировка ответов windows-1251

if(isset($_POST['action']) and $_POST['action']=='registration')
{
//sleep(1);
$GLOBALS['_RESULT']['show_otvet']='
         <table class="reg_content" width="90%" border="0" align="center" cellpadding="1" cellspacing="1">
            <tr>
              <td colspan="2" align="center"><strong>Регистрация</strong><br /><br /></td>
              </tr>
            <tr>
              <td align="right">Логин</td>
              <td align="left"><input class="input_reg" type="text" name="user_login" id="user_login" /></td>
            </tr>
            <tr>
              <td align="right">Пароль</td>
              <td align="left"><input class="input_reg" type="password" name="user_password" id="user_password" /></td>
            </tr>
            <tr>
              <td align="right">Пароль ещё раз</td>
              <td align="left"><input class="input_reg" type="password" name="user_password2" id="user_password2" /></td>
            </tr>
            <tr>
              <td align="right">Имя</td>
              <td align="left"><input class="input_reg" type="text" name="user_name" id="user_name" /></td>
            </tr>
            <tr>
              <td align="right">E-mail</td>
              <td align="left"><input class="input_reg" type="text" name="user_email" id="user_email" /></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td align="left"><div id="create_button"><input class="input_button_con" type="button" name="reg" id="regi" value="Регистрация" onClick="registration()" /></div>
              <div id="ajaxload"><img src="../images/ajax-loader.gif"></div>
              </td>
            </tr>
            <tr><td colspan="2" align="center"><br /><br /><div id="reg_result"></div></td></tr>
          </table>
';
}
?>


Когда заполняешь форму и жмёшь на кнопку зарегиться, то всё тоже идёт через аякс. Фишка в том, что функция registration() не видит форму. А если быть на главной стр и потом нажать на регистрацию, то появится форма,  НО если посмотреть исходный хтмл код, то там остаётся старый контент. В чём может быть дело?

Автор: Snowcore 24.9.2008, 12:13
ответ приходит правильный? Посмотрите FireBug'ом.
Динамическая замена DOM элементов - достаточно тонкая тема, здесь могут быть глюки

Автор: supercelt 24.9.2008, 14:38
Решение проблемы: На стрвнице было поле с таким же именем

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)