Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
2 / 2 / 0
Регистрация: 13.09.2013
Сообщений: 27

Получение нескольких переменных ajax

23.12.2013, 15:30. Показов 3806. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я использую достаточно распространенный код для добавления комментариев:

Форма добавления комментария:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<form action="sendMessage.php" method="post" name="form">
    <p>
        Автор:<br> 
        <input name="name" type="text" id="name">
    </p>
    <p>
        Email:<br> 
        <input name="email" type="text" id="email">
    </p>
    <p>
        Текст сообщения:<br>
        <textarea name="message" rows="5" cols="50" id="message"></textarea>
    </p>
    <input name="js" type="hidden" value="no" id="js">
    <p>
        <input name="button" type="submit" value="Отправить" id="send"> <p id="resp"></p>
    </p>
</form>
sendMessage.php:
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
if(empty($_POST['js'])){
    $res = 123; // default value without meaning
    $result = false; // default value
 
        $errors = array();
        
        $name = @iconv("UTF-8", "windows-1251", $_POST['name']);
        $name = filter_var($name, FILTER_SANITIZE_STRING);
        $name = nl2br($name);
        $name = addslashes($name);
        $name = htmlspecialchars($name);
        $name = stripslashes($name);
        // Remove the new line characters that are left
        $name = str_replace(array(chr(10),chr(13)),'',$name);
        if(!check_name($name)) $errors['name']="Имя слишком короткое?";
        
        $email = @iconv("UTF-8", "windows-1251", $_POST['email']);
        if(!($email = filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL)))
        {
            $email = 'Please enter a valid Email.';
        }
        $email = filter_var($email, FILTER_SANITIZE_EMAIL);
        $email = nl2br($email);
        $email = addslashes($email);
        $email = htmlspecialchars($email);
        $email = stripslashes($email);
        // Remove the new line characters that are left
        $email = str_replace(array(chr(10),chr(13)),'',$email);
        if(!check_email($email)) $errors['email']="Проверте корректность email";
        
        $message = @iconv("UTF-8", "windows-1251", $_POST['message']);
        $message = filter_var($message, FILTER_SANITIZE_STRING);
        $message = addslashes($message);
        $message = htmlspecialchars($message);
        $message = stripslashes($message);
        if(!check_comment($message)) $errors['message']="Комментарий слишком короткий?";
        
        if(!empty($errors)) {
            $res=3; // Ошибки в заполнении формы
            //return $res;
        } else {
            // пытаемся добавить комментарий в базу
            $result=mysql_query("INSERT INTO .........;
        }
        
        if($result == true) {
            $res=0; //Ваше сообшение успешно отправлено
        } else if($result == false){
            $res=1; //Сообщение не отправлено. Ошибка базы данных
        }   
    echo $res;
}
jQuery-скрипт script.js:
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
30
$(function() {
    $("#send").click(function(){
        var name = $("#name").val();
        var email = $("#email").val();
        var message = $("#message").val();              
        $.ajax({
            type: "POST",
            url: "sendMessage.php",
            data: {"name": name, "email": email, "message": message},
            dataType: "json",
            cache: false,                       
            success: function(response){
                var messageResp = new Array('Ваше сообщение отправлено','Сообщение не отправлено Ошибка базы данных','Нельзя отправлять пустые сообщения','Ошибки в заполнении формы');
                var resultStat = messageResp[Number(response)];
                if(response == 0){
                    $("#name").val("");
                    $("#email").val("");
                    $("#message").val("");
                    $("#commentBlock").append("<div class='comment'>Автор: <strong>"+name+"</strong><br>"+message+"</div>");
                }
                //$("#resp").text(resultStat).show().delay(1500).fadeOut(800);
                $("#resp").text(resultStat);
                $("#resp").show().delay(1500).fadeOut(800);
                
            }
        });
        return false;
                
    });
});
sendMessage.php возвращает значение (0,1,2 или 3). Я понимаю, как они приходят и как обрабатываются.

А если я хочу, чтобы sendMessage.php возвращал (а script.js, соотв., принимал) не одно значение, а несколько? Например, status={0|1|2|3} и myvar={val_1|val_2}

Типа, if(response == 0) то $("#commentBlock").append("<div class='comment'>Автор: <strong>"+name+"</strong><br>"+message+"</div>");
И if(myvar == 'val_2') то $("#addText").append("<div class='additional'>жесть!</div>");

Тут как-то просто должно быть, json надо указать, но я не соображу, как. Можете подсказать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.12.2013, 15:30
Ответы с готовыми решениями:

Отправка нескольких переменных $.ajax
Подскажите пожалуйста, где совершил ошибку, не срабатывает $.ajax Форму целиком выкладывать не стал, когда испытывал без jS атрибуты...

Ajax передача нескольких переменных на сервер
Доброго времени суток. Необходимо аяксом передать четыре переменные в php обработчик, доходит только последняя var...

Получение нескольких строк от сервера с помощью ajax
Привет, Помогите плиз, на сервере формируются 2 строки (json). как их отправить (echo $str1; echo $str2 ???), и как их потом...

4
5 / 5 / 2
Регистрация: 24.04.2011
Сообщений: 153
23.12.2013, 15:37
http://stackoverflow.com/quest... son-return
1
2 / 2 / 0
Регистрация: 13.09.2013
Сообщений: 27
23.12.2013, 16:18  [ТС]
Спасибо за ссылку!
0
5 / 5 / 2
Регистрация: 24.04.2011
Сообщений: 153
23.12.2013, 17:46
Надеюсь помогло
0
2 / 2 / 0
Регистрация: 13.09.2013
Сообщений: 27
23.12.2013, 17:48  [ТС]
Как раз то, что надо. Не решение конкретной задачи, а хороший пример. Вопрос закрыт. Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.12.2013, 17:48
Помогаю со студенческими работами здесь

Ajax отправка-получение
Всем привет!) В общем ребята задача: Заполнил поля. Нажал кнопку. Получил результат. Ошибок консоль не выдает. А результат не...

Получение массива из AJAX
Есть слайдер изображений он принимает изображения в таком виде $.swipebox( ); Делаю значит запрос через аякс получаю все ссылки...

Несколько переменных в Ajax DATA?
Как засунуть несколько переменных в ajax data? пробовал, но результата - 0 : data: { name : name,phone: phone, time: time },

Отправка и получение данных ajax
Отправляю данные через ajax $.ajax({ url: '../send.php', type: 'post', data:{ 'Weight': FullWeight, ...

Из php в JavaScript несколько переменных (Ajax)
Вообщем есть функция которая отправляет в php несколько переменных. $.post('RegScript.php', { LoginReg:LoginReg, ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru