нет вывода ответа ajax в html шабон

246
19 июля 2017, 21:53

есть форма:

<div class="profile_menu_main">
<div id="text_error_form"></div>
<form method="post" action="index.php?route=action/login" class="form_data">
    <div class="form-group col-md-4"><input type="text" id="login" class="form-control" name='name' placeholder="<?=$data['form_login_text']?>"/></div>
    <div class="form-group col-md-4"><input type="password" id="pass" class="form-control" name='pass' placeholder="<?=$data['form_pass_text']?>"/></div>
    <div class="form-group col-md-4"><input type="submit" id="login_form" name="login_form" class="btn btn-primary Go" value="<?=$data['btn_form_login']?>" /><a href="#open_RuBizCSS3Modal" class="btn btn-primary" data-toggle="modal" style="margin-left: 5px;" ><i class="fa fa-share"></i><?=$data['btn_register']?></a></div>
</form>

общий и универсаный ajax:

$(document).ready(function() {
$('.form_data').on('submit', function(e){
e.preventDefault();
var $that = $(this),
    fData = $that.serialize();
    $.ajax({
        url: $that.attr('action'),
        type: $that.attr('method'),
        data: {form_data: fData},
        dataType: 'json',
        success: function(json){
            if(json.Error) {
                document.getElementById('text_error_form').innerHTML = json.Error;
            } else if(json.Success != null) {
                $('#text_error_form').remove();
                $('.form_data').replaceWith(json.Success);
            }
        },
        error:function(xhr, str){
           alert('Возникла ошибка: ' + xhr.responseCode);
        }
    });
});
});

и php обработчик:

if (isset($_POST['form_data'])) {
            if ($this->valid->secureData($_POST)) {
                parse_str($_POST['form_data'], $form_data);
                if ($form_data['name'] == "" or $form_data['pass'] == "") {
                    $data['message'] = $lang['message_error_auth'];
                } else {
                    if (!$this->valid->validLogin($form_data['name'])) {
                            $data['message'] = $lang['message_error_login'];
                        } else {
                            $login = $form_data['name'];
                            $pass = md5($form_data['pass']);
                            $authUser = $this->addUser->AuthUser($login, $pass);
                            if($authUser == true and $authUser[0]['activ_status'] == "1") {
                                $_SESSION['user'] = $login;
                                $upd_online_status['online_status'] = time();
                                $this->addUser->UpdOnlineStatus($upd_online_status, $login);
                                $loginSuccess = sprintf($lang['message_error_success'], $_SESSION['user']);
                            } else {
                                if ($authUser == true and $authUser[0]['activ_status'] == "0") $data['message'] = $lang['message_activation'];
                                else $data['message'] = $lang['message_error_auth'];
                            }
                        }
                    }
                }
                $resArr = array('Error' => $data['message'], 'Success' => $loginSuccess);
                echo json_encode($resArr);
            }

когда идет отправка данных через ajax то все работает, сервер работает с данными и если возвращает ошибку (не верный пароль или такой существует) то в консоле этот ответ от сервера виден НО в html он не записывается не могу понять почему, а когда в ответе от сервера приходит меню авторизованого пользователя то оно успешно заменяет собой форму авторизации. почему в html не записывается ответ от сервера. а только в консоле??

Answer 1

Попробуйте так:

document.getElementById('text_error_form').html(json.Error);
Answer 2

В универсальном аяксе замените строку

document.getElementById('text_error_form').innerHTML = json.Error;

на $('#text_error_form').html(json.Error);

READ ALSO
Не работает сортировка на сайте WordPress

Не работает сортировка на сайте WordPress

Данные находятся в 1 файленазвание 1

254
Маска для блока (HTML, CSS)

Маска для блока (HTML, CSS)

Доброе утро!

198
Проблема с &ldquo;деревом&rdquo; на vue.js

Проблема с “деревом” на vue.js

Окей, это не совсем дерево, а просто что-то вроде раскрывающегося спискаНемного застряла - не знаю, как сделать так, чтобы когда я нажимаю на конкретный...

222