Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
11 / 11 / 8
Регистрация: 26.03.2014
Сообщений: 400

Выполнение AJAX для подгруженных AJAX-зависимых ссылок

24.02.2016, 13:05. Показов 896. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Форма авторизации/регистрации.
HTML5
1
2
3
4
5
6
7
        <form class="authForm" method="post">
            <input name="login" type="text" id="login" maxlength="15" placeholder="8(900)123-45-67">
            <input name="password" type="password" id="password" maxlength="32" placeholder="Пароль">
            <noscript><input name="submitIn" type="image" id="submitIn" value="Войти"></noscript>
            <noscript><input name="submitReg" type="image" id="submitReg" value="Зарегистрироваться"></noscript>
        </form>
        <a id="regLink" href="#" style="display: inline-block; margin-left: 20px;">Регистрация</a><a id="loginLink" href="#">Войти</a>
AJAX-запрос для ссылок-кнопок:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$(function(){
    "use strict";
    $(document).on('click', '#regLink', function(e){ //данная конструкция позволяет выполнить AJAX-запрос после "подгрузки" данной ссылки AJAX-ом
        e.preventDefault();
        $.ajax({
            url: 'tmpl/obrabotka.php',
            type:'post',
            data: {login: $('#login').val(), pass:$('#password').val(), what: 'reg' },
            success:function(loader){
                $('header').html(loader);
            }
        });
    });
});
 
$(function(){
    "use strict";
    $(document).on('click', '#loginLink', function(e){  
        e.preventDefault();
        $.ajax({
            url: 'tmpl/obrabotka.php',
            type:'post',
            data: {login: $('#login').val(), pass:$('#password').val(), what: 'login' },
            success:function(loader){
                $('header').html(loader);
            }
        });
    });
});
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php 
if(!empty($_POST))
{
if ((isset($_POST['login'])) && (isset($_POST['pass']))){
        $checkLogin = false;
        
        $login = isset($_POST['login'])?$_POST['login']:''; 
        $password = isset($_POST['pass'])?$_POST['pass']:'';
        $password = md5($password);
        $type = isset($_POST['what'])?$_POST['what']:'';
 
        if ($type == 'reg')
        {
            $qrCheck = mysql_query( sprintf("SELECT `login` FROM `autorizer` WHERE `login`='%s'", mysql_real_escape_string($login)));
            
            if (mysql_num_rows($qrCheck) == 0) {
                
                if ((strlen($login)==15) && ($login[0]=='8') && ($login[1]=='(') && is_numeric($login[2]) && is_numeric($login[3]) && is_numeric($login[4]) && ($login[5]==')') && is_numeric($login[6]) && is_numeric($login[7]) && is_numeric($login[8]) && ($login[9]=='-') && is_numeric($login[10]) && is_numeric($login[11]) && ($login[12]=='-') && is_numeric($login[13]) && is_numeric($login[14])) {
                    $checkLogin = true;
                }
        
                if (($checkLogin) && ($password!='')) {
                    $qr = mysql_query( sprintf("INSERT INTO `autorizer` (`login`, `password`) VALUES ('%s', '%s')", mysql_real_escape_string($login), mysql_real_escape_string($password)));
                    if ($qr) {
                        $qrSes = mysql_query( sprintf("SELECT `id`, `login` FROM `autorizer` WHERE `login`='%s'", mysql_real_escape_string($login)));
                        if ($qrSes) {
                            while($row = mysql_fetch_array($qrSes)){
                                $_SESSION['user_id'] = $row['id'];
                                $_SESSION['user_login'] = $row['login'];
                                $_SESSION['SID'] = md5(crypt($row['id'],$row['login']));
                                setcookie("CookieMy", $row['login'], time()+60*60*24*10);
                            }?>
                        <script>history.pushState(null, null, 'main2');</script><?php
                        $result = '
                            <form class="exitForm" method="get">
                                <p>Здравствуйте, '.$_SESSION['user_login'].'!</p>
                                <input name="exit" type="submit" value="Выйти">
                            </form>
                            <a id="editData" href="#openModal">Отредактировать данные</a>';
                        ?><script>$(".content").load('../tmp/content2.php');</script><?php
                        }
                        else {$result = 'Произошло что-то не предвиденное. Повторите попытку.';}
                    }
                    else {
                        $result = '
                            <p class="errorMsg">Некорректные данные.</p>
                            <form class="authForm" method="post">
                                <input name="login" type="text" id="login" maxlength="15" placeholder="8(900)123-45-67">
                                <input name="password" type="password" id="password" maxlength="32" placeholder="Пароль">
                                <noscript><input name="submitIn" type="image" id="submitIn" value="Войти"></noscript>
                                <noscript><input name="submitReg" type="image" id="submitReg" value="Зарегистрироваться"></noscript>
                            </form>
                            <a id="regLink" href="#" style="display: inline-block; margin-left: 20px;">Регистрация</a><a id="loginLink" href="#">Войти</a>
                            ';
                    }
                }
            }
            else
            {
                $result = '
                    <p class="errorMsg">Номер зарегистрирован.</p>
                    <form class="authForm" method="post">
                        <input name="login" type="text" id="login" maxlength="15" placeholder="8(900)123-45-67">
                        <input name="password" type="password" id="password" maxlength="32" placeholder="Пароль">
                        <noscript><input name="submitIn" type="image" id="submitIn" value="Войти"></noscript>
                        <noscript><input name="submitReg" type="image" id="submitReg" value="Зарегистрироваться"></noscript>
                    </form>
                    <a id="regLink" href="#" style="display: inline-block; margin-left: 20px;">Регистрация</a><a id="loginLink" href="#">Войти</a>
                    ';
            }
        }
        else if ($type == 'login') {
            $qrCheck = mysql_query( sprintf("SELECT `id`, `login` FROM `autorizer` WHERE (login='%s' AND password='%s')", mysql_real_escape_string($login), mysql_real_escape_string($password)));
            if (mysql_num_rows($qrCheck) == 0) {
                $result = '
                    <p class="errorMsg">Пользователь не зарегистрирован, либо пароль введен не верно.</p>
                    <form class="authForm" method="post">
                        <input name="login" type="text" id="login" maxlength="15" placeholder="8(900)123-45-67">
                        <input name="password" type="password" id="password" maxlength="32" placeholder="Пароль">
                        <noscript><input name="submitIn" type="image" id="submitIn" value="Войти"></noscript>
                        <noscript><input name="submitReg" type="image" id="submitReg" value="Зарегистрироваться"></noscript>
                    </form>
                    <a id="regLink" href="#" style="display: inline-block; margin-left: 20px;">Регистрация</a><a id="loginLink" href="#">Войти</a>
                    ';
            }
            else {
                $row = mysql_fetch_array($qrCheck);
                $_SESSION['user_id'] = $row['id'];
                $_SESSION['user_login'] = $row['login'];
                $_SESSION['SID'] = md5(crypt($row['id'],$row['login']));
                setcookie("CookieMy", $row['login'], time()+60*60*24*10);
                ?><script>history.pushState(null, null, 'main2');</script><?php
                $result = '
                    <form class="exitForm" method="get">
                        <p>Здравствуйте, '.$_SESSION['user_login'].'!</p>
                        <input name="exit" type="submit" value="Выйти">
                    </form>
                    <a id="editData" href="#openModal">Отредактировать данные</a>';
                ?><script>$(".content").load('../tmp/content2.php');</script><?php
            }               
        }
    }
}
?>
Добавлено через 1 час 1 минуту
Модальное окно, открывается средствами CSS.
HTML5
1
2
3
4
5
6
7
8
9
10
11
<a id="editData" href="#openModal">Отредактировать данные</a>
 
<div id="openModal" class="modalDialog">
        <div>
            <a id="close" href="#close" title="Закрыть" class="close">X</a>
            <h2>Персональные данные</h2>
            <form class="regForm" method="post">
                <input  name="formFIO" type="text" id="formFIO" placeholder="ФИО">
                </form>
 
        </div>
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
.modalDialog {
    position: fixed;
    font-family: Arial, Helvetica, sans-serif;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background: rgba(0,0,0,0.8);
    z-index: 99999;
    -webkit-transition: opacity 400ms ease-in;
    -moz-transition: opacity 400ms ease-in;
    transition: opacity 400ms ease-in;
    display: none;
    pointer-events: none;
}
 
.modalDialog:target {
    display: block;
    pointer-events: auto;
}
 
.modalDialog > div {
    width: 800px;
    height: 320px;
    position: relative;
    margin: 10% auto;
    padding: 5px 20px 13px 20px;
    border-radius: 10px;
    background: #fff;
    background: -moz-linear-gradient(#fff, #999);
    background: -webkit-linear-gradient(#fff, #999);
    background: -o-linear-gradient(#fff, #999);
}
 
.close {
    background: #606061;
    color: #FFFFFF;
    line-height: 25px;
    position: absolute;
    right: -12px;
    text-align: center;
    top: -10px;
    width: 24px;
    text-decoration: none;
    font-weight: bold;
    -webkit-border-radius: 12px;
    -moz-border-radius: 12px;
    border-radius: 12px;
    -moz-box-shadow: 1px 1px 3px #000;
    -webkit-box-shadow: 1px 1px 3px #000;
    box-shadow: 1px 1px 3px #000;
}
 
.close:hover { background: #00d9ff; }
Обработка нажатия на ссылку.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
$(function(){
    "use strict";
    $('#editData').click(function(e){
 
        $.ajax({
            url: 'tmpl/obrabotka.php',
            type:'post',
            data: {editData: 'yes'}
        });
    });
});
Обработка данных:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if (isset($_POST['editData'])) {
        echo 'aga';?> <script> alert('asd');</script> <?php
        $qr = mysql_query( sprintf("SELECT * FROM `abonents` WHERE `id`='%s'", mysql_real_escape_string($_SESSION['user_id'])));
        if ($qr) {
            while($row = mysql_fetch_array($qr)){ echo 'aga';?>
                <script>
                    $('#formFIO').val(<?php echo $row['FIO'];?>);
                </script>
    <?php   }
        }
?>
Как при открытии этого модального окна загрузить в INPUT значение из БД?
Мне не приходят ни alert ни echo
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.02.2016, 13:05
Ответы с готовыми решениями:

Выполнение JS в страницах подгруженных через ajax
Подскажите как можно сделать. Есть такой скрипт $(document).ready(function(){ $('a').click(function(e){ ...

Как вызывать события подгруженных компонентов из ajax?
Добрый день! Обрисую ситуацию. У меня есть страница index.html в ней javascript код и пустая таблица с именем html-data-table. Есть еще...

Не работает onClick() для ссылок, которые были загружены через AJAX
Смотрите, какая проблема: у меня есть табличка, данные в которую загружаются через AJAX (плагин datatables, если кто знает такой). В...

1
11 / 11 / 8
Регистрация: 26.03.2014
Сообщений: 400
24.02.2016, 19:41  [ТС]
Сделал так, как то страшно...
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
if (isset($_POST['editData'])) {
        $qr = mysql_query( sprintf("SELECT * FROM `abonents` WHERE `id`='%s'", mysql_real_escape_string($_SESSION['user_id'])));
        if ($qr) {
            while($row = mysql_fetch_assoc($qr)){
                $result ="
        <div>
            <a id=\"close\" href=\"#close\" title=\"Закрыть\" class=\"close\">X</a>
            <h2>Персональные данные</h2>
            <form class=\"regForm\" method=\"post\">
                <table class=\"left\">
                    <tr><td class=\"formText\"><label>ФИО: </label></td><td><input  name=\"formFIO\" type=\"text\" id=\"formFIO\" placeholder=\"ФИО\" value=\"{$row['FIO']}\"></td></tr>
                    <tr><td class=\"formText\"><label>Дата рождения: </label></td><td><input  name=\"formBirthday\" type=\"date\" id=\"formBirthday\" placeholder=\"20.02.2016\" value=\"{$row['birthday']}\"></td></tr>
                    <tr><td class=\"formText\"><label>Паспорт: </label></td><td><input  name=\"formPassport\" type=\"text\" id=\"formPassport\" maxlength=\"10\" placeholder=\"8000900000\" value=\"{$row['passport']}\"></td></tr>
                    <tr><td class=\"formText\"><label>ИНН: </label></td><td><input  name=\"formInn\" type=\"text\" id=\"formInn\" maxlength=\"12\" placeholder=\"123456789012\" value=\"{$row['inn']}\"></td></tr>
                    <tr><td class=\"formText\"><label>Адрес: </label></td><td><input  name=\"formAddress\" type=\"text\" id=\"formAddress\" placeholder=\"ул. Мира, д. 1\" value=\"{$row['address']}\"></td></tr>
                    <tr><td class=\"formText\"><label>Место работы: </label></td><td><input  name=\"formWork\" type=\"text\" id=\"formWork\" placeholder=\"название организации\" value=\"{$row['work']}\"></td></tr>
                    <tr><td class=\"formText\"><label>Образование: </label></td><td>
                        <select id=\"formEdu\">
                            <option ";
                            if ($row['type_edu']==0) {$result .= "selected ";}
                            $result .= "disabled>Выберите из списка</option>
                            <option ";
                            if ($row['type_edu']==1) {$result .= "selected ";} 
                            $result .= "value=\"1\">начальное</option>
                            <option ";
                            if ($row['type_edu']==2) {$result .= "selected ";} 
                            $result .= "value=\"2\">среднее</option>
                            <option ";
                            if ($row['type_edu']==3) {$result .= "selected ";} 
                            $result .= "value=\"3\">высшее</option>
                        </select></td></tr>
                    <tr><td></td>
                        <td>
                            <noscript><input class=\"left\" name=\"sendData\" type=\"submit\" id=\"sendData\" value=\"Сохранить\"></noscript>
                            <a id=\"sendData\" href=\"#\">Сохранить</a>                        
                        </td>
                    </tr>
                </table>
                <p class=\"block\">* - поля обязательные к заполнению.</p>
                <p class=\"help right\" id=\"helpText\"></p>
            </form>
        </div>
                ";
            }
        }
        else {
            $result ='
            <div>
            <a id="close" href="#close" title="Закрыть" class="close">X</a>
            <h2>Персональные данные</h2>
            <form class="regForm" method="post">
                <table class="left">
                    <!--tr><td class="formText"><label>Номер телефона: </label></td><td><input name="formLogin" type="text" id="formLogin" maxlength="15" placeholder="8(900)123-45-67" required>*</td></tr>
                    <tr><td class="formText"><label">Пароль: </label></td><td><input  name="formPassword" type="password" id="formPassword" maxlength="32" placeholder="Пароль" required>*</td></tr-->
                    <tr><td class="formText"><label>ФИО: </label></td><td><input  name="formFIO" type="text" id="formFIO" placeholder="ФИО"></td></tr>
                    <tr><td class="formText"><label>Дата рождения: </label></td><td><input  name="formBirthday" type="date" id="formBirthday" placeholder="20.02.2016"></td></tr>
                    <tr><td class="formText"><label>Паспорт: </label></td><td><input  name="formPassport" type="text" id="formPassport" maxlength="10" placeholder="8000900000"></td></tr>
                    <tr><td class="formText"><label>ИНН: </label></td><td><input  name="formInn" type="text" id="formInn" maxlength="12" placeholder="123456789012"></td></tr>
                    <tr><td class="formText"><label>Адрес: </label></td><td><input  name="formAddress" type="text" id="formAddress" placeholder="ул. Мира, д. 1"></td></tr>
                    <tr><td class="formText"><label>Место работы: </label></td><td><input  name="formWork" type="text" id="formWork" placeholder="название организации"></td></tr>
                    <tr><td class="formText"><label>Образование: </label></td><td>
                        <select id="formEdu">
                            <option selected disabled>Выберите из списка</option>
                            <option value="1">начальное</option>
                            <option value="2">среднее</option>
                            <option value="3">высшее</option>
                        </select></td></tr>
                    <tr><td></td>
                        <td>
                            <noscript><input class="left" name="sendData" type="submit" id="sendData" value="Сохранить"></noscript>
                            <a id="sendData" href="#">Сохранить</a>                          
                        </td>
                    </tr>
                </table>
                <p class="block">* - поля обязательные к заполнению.</p>
                <p class="help right" id="helpText"></p>
            </form>
        </div>
            ';
        }
    }
?>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$(function(){
    "use strict";
    $('#editData').click(function(e){
        $.ajax({
            url: 'tmpl/obrabotka.php',
            type:'post',
            data: {editData: 'yes'},
            success:function(loader){
                $('#openModal').html(loader);
            }
        });
    });
});
 
$(function(){
    "use strict";
    $(document).on('click', '#sendData', function(e){
        e.preventDefault();
        $.ajax({
            url: 'tmpl/obrabotka.php',
            type:'post',
            data: {fio: $('#formFIO').val(), birth: $('#formBirthday').val(), passport: $('#formPassport').val(), inn: $('#formInn').val(), address: $('#formAddress').val(), work: $('#formWork').val(), edu: $('#formEdu').val(), sendData: 'yes' },
            success:function(loader){
                $('header').html(loader);
            }
        });
    });
});
Теперь вопрос:
Почему я не могу "обновить" данные, но "новая" запись нормально записывается.

PHP
1
2
3
4
5
<?php
if ($qrCheck) {
                $qr = mysql_query( sprintf("INSERT INTO `abonents` (`id`, `FIO`, `birthday`, `passport`, `inn`, `address`, `work`, `type_edu`) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", mysql_real_escape_string($_SESSION['user_id']), mysql_real_escape_string($fio), mysql_real_escape_string($birth), mysql_real_escape_string($passport), mysql_real_escape_string($inn), mysql_real_escape_string($address), mysql_real_escape_string($work), mysql_real_escape_string($edu)));
            }
?>
В qrCheck заходит при обновлении, но сами данные не обновляет.

Добавлено через 6 минут
PHP
1
2
3
4
5
<?php
else {
                $qr = mysql_query( sprintf("UPDATE `abonents` SET `FIO`='%s', `birthday`='%s', `passport`='%s', `inn`='%s', `address`='%s', `work`='%s', `type_edu`='%s') WHERE `id`='%s'", mysql_real_escape_string($fio), mysql_real_escape_string($birth), mysql_real_escape_string($passport), mysql_real_escape_string($inn), mysql_real_escape_string($address), mysql_real_escape_string($work), mysql_real_escape_string($edu), mysql_real_escape_string($_SESSION['user_id']))); 
            }?>
//ON DUPLICATE KEY UPDATE `id`= VALUES(`id`) тоже пробовал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.02.2016, 19:41
Помогаю со студенческими работами здесь

Параллельное выполнение ajax
Есть такой код, но при выполнении второй ajax запрос перекрывает данные первого. Как разделить или указать контекст или что еще нужно? ...

Выполнение js после Ajax
Подгружаю контент без перезагрузки страницы: function showContent(link) { var cont =...

Выполнение запроса AJAX
Как при виполнении запроса AJAX на блок где будет загружена информация вставить jif-изображение.

PHP+AJAX странное поведение ссылок
На странице есть ссылки &lt;a class=&quot;link&quot; onclick=&quot;document.getElementById('listai').play()&quot; href=&quot;live?page=1&amp;amp;id=5&quot;&gt;&lt;h2...

Последовательное выполнение ajax-запросов
У меня задача такая: в цикле перебирается набор элементов, и для каждого вызывается функция, выполняющая аякс-запрос, которая в свою...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru