Как отобразить оповещение в Javascript из контроллера для просмотра с помощью span

#javascript #php #codeigniter

#javascript #php #codeigniter

Вопрос:

Я обнаружил ошибку в своем скрипте.

Я хочу вызвать оповещение javascript и отобразить его в моем представлении с текстом span. Но с моим скриптом ничего не происходит. Интервал не отображается из оповещения на контроллере.

Это мой контроллер :

 public function validate_objectb()
{
    $id_with = $_POST['id'];
    $objectb= $_POST['objectb'];

    $data = array(
        'id' => $id_with,
        'objectb' => $objectb
    );
    $objecta = $this->session->userdata('objecta');

    if ($objecta != $objectb)
    {
        echo '<script>var error = document.getElementById("message-validate")
            error.innerHTML = "<span style=color: red;>"  
                    "Your object didnt same with partial.</span>" 
            </script>';
    } else {
        $this->db->insert('box',$data);
    }
  

Это мое мнение [ОБНОВЛЕНИЕ]:

 <?php echo form_open('controllers/validate','class="form"');?>
<select name="objectb" id="objectb" class="form-control">
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
    <option value="d">d</option>
</select>
<button type="submit" class="btn btn-primary" id="check">Check Object</button>
<button type="submit" class="btn btn-primary" id="add">Add Again</button>
<span id="message-validate" class="message-form"></span>
<?php echo form_close() ?>
  

В моем случае я хочу, чтобы пользователь в первый раз выбрал objecta и objecta сохранил сеанс с set_userdata и для проверки данных. Если не то же самое с objectb сообщением о проверке, отображаемым на странице просмотра, и если то же самое, то objecta amp; objectb сохранить в database .

И с моим скриптом ничего не произошло

Комментарии:

1. Отправляете ли вы форму с использованием javascript и Ajax?

2. Нет, я просто использую javascript в своем контроллере, чтобы получить оповещение

3. Если вы отправляете форму «нормально» без ajax, тогда страница должна перезагрузиться, и из того, что я вижу в опубликованном контроллере, вы не возвращаете остальную часть HTML? Это должно просто сгенерировать пустую страницу? Или вы возвращаете полную страницу в остальной части кода, которую мы не видим?

4. Прежде чем я просто использую этот скрипт, я использую //echo "<script>alert('Your object didnt same with partial')</script>;"; . И обычно отображается оповещение, но я хочу использовать span, а не alert box

Ответ №1:

Вы используете …

 document.getElementById("message-validate")
  

… но «message-validate» — это класс элемента, а не его идентификатор:

 <span class="message-form message-validate"></span>
  

Вы должны либо установить «message-validate» в качестве идентификатора диапазона:

 <span id="message-validate" class="message-form"></span>
  

или получить элемент по его классу.:

 var error = document.getElementsByClassName("message-validate")
  

Имейте в виду, что если вы решите выбрать элемент по его классу, то все элементы класса «проверка сообщения» будут отображать сообщение об ошибке на вашей странице.

Редактировать

Я бы попытался повторить сценарий отдельно:

 echo "<script type='text/javascript'>"
echo "var error = document.getElementById('message-validate')"
echo "error.innerHTML = 'Error message';"
echo "</script>"
  

Комментарии:

1. @IvanBahri попробуйте выполнить отладку в вашем предпочтительном браузере. Кроме того, попробуйте повторить свой скрипт отдельно, как я отредактировал в ответе.