Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448

Как правильно считать данные, полученные через Ajax?

14.11.2016, 14:54. Показов 1444. Ответов 5
Метки ajax, php (Все метки)

Студворк — интернет-сервис помощи студентам
Ajax отправляет в php-скрипт:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
      var name = $('#name').val();
      var phone = $('#phone').val();
      var dataString = 'name=' + name + '&phone=' + phone;
                             $.ajax({
                            type: "POST",
                            url: baseDir + 'modules/CallRequest/CallRequest.php',
                            data: dataString,
                            dataType: 'json',
                            contentType: 'json',
                            headers: {},
                            success: function() {
                                alert('success');
                                mask.classList.remove("active");
                                call_btn.classList.remove("hidden");
                                call_form.classList.add("hidden");
                            },
                            error: function() {
                                alert("error");
                            }
                     });
Потом пытаюсь отправить эти данные на почту:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
<?php
include(dirname(__FILE__).'/../../config/config.inc.php');
include(dirname(__FILE__).'/../../init.php');
 
$name = addslashes(htmlspecialchars(filter_input(INPUT_POST, 'name')));
$phone = addslashes(htmlspecialchars(filter_input(INPUT_POST, 'phone')));
 
$subject = "=?utf-8?B?" . base64_encode("Data") . "?=";
$message    = "name: '".$name."'\nPhone: '".$phone"'.";
mail('any_mail@gmail.com', $subject, $message, "Content-type: text/plain; charset=UTF-8\r\n");
Но ajax получает error. Если убрать '$name = addslashes ...' и всё ниже - тогда success. Включал режим разработчика в CMS, но в логе никакие ошибки не появились. Думаю дело в том, что неправильно считываю данные с полученного json. Погуглил, почитал документации, но чёт не получается. Можете помочь?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.11.2016, 14:54
Ответы с готовыми решениями:

Как запустить командную строку, выполнить команду и считать полученные данные
Добрый вечер. Подскажите как запустить командную строку, выполнить команду и считать полученные данные?

Не выводит данные полученные ajax запросом
Есть простой код с помощью ajax посылаю запрос на сервер и он отсылает обратно обычную строку, и после получение результата хочу просто...

Вынести полученные данные ajax за пределы функции
var result = $.ajax ({ url: &quot;wmark.php&quot;, type: &quot;POST&quot;, data: {&quot;column&quot;: column, &quot;mark&quot;: mark}, dataType: &quot;html&quot;, ...

5
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
14.11.2016, 15:58
Лучший ответ Сообщение было отмечено triadec_96 как решение

Решение

Цитата Сообщение от triadec_96 Посмотреть сообщение
dataType: 'json',
* * * * * * * * * * * * * * contentType: 'json',
ТЫ тут сказал, что отправляешь на сервер json данные и получаешь в ответ json
Цитата Сообщение от triadec_96 Посмотреть сообщение
var dataString = 'name=' + name + '&phone=' + phone;
Это не json
И в этом скрипте не видно чтобы сервер отправлял какие-то данные, а должен отправлять валидный json
1
 Аватар для triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
14.11.2016, 16:05  [ТС]
Спасибо.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
14.11.2016, 16:11
Цитата Сообщение от triadec_96 Посмотреть сообщение
Первый вопрос: как обойти это ограничение Smarty?
Встречный вопрос: а зачем надо было указывать что отправляешь json?
Цитата Сообщение от triadec_96 Посмотреть сообщение
Второй: как правильно ответить ajax-у с php-файла?
В соответствии с параметром dataType. Если json, то отправлять валидный json, если xml, то валидный xml, если text, то текст, в документации все есть
если json, то
PHP
1
echo json_encode('This is valid json');
0
 Аватар для triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
14.11.2016, 16:36  [ТС]
Цитата Сообщение от Jewbacabra Посмотреть сообщение
В соответствии с параметром dataType. Если json, то отправлять валидный json, если xml, то валидный xml, если text, то текст, в документации все есть
если json, то
Вот переделал скрипт:
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
$('#call-submit').on('click', function() {
                        // creating JSON
                        var obj = new Object();
                        obj.name = $('#name').val();
                        obj.phone = $('#phone').val();
                        var jsonString= JSON.stringify(obj);
                        
                        $.ajax({
                            type: "POST",
                            url: baseDir + 'modules/CallRequest/CallRequest.php',
                            data: jsonString,
                            dataType: 'json',
                            contentType: 'json',
                            headers: {},
                            success: function() {
                                alert('Ваши данные приняты.');
                                mask.classList.remove("active");
                                call_btn.classList.remove("hidden");
                                call_form.classList.add("hidden");
                            },
                            error: function(data) {
                                alert("Данные не отправлены.");
                            }
                     });
    });
В php-скрипт в конец добавил
PHP/HTML
1
echo json_encode('This is valid json');
На всякий пытался и через GET передавать - всё-равно возвращает error.

Добавлено через 6 минут
Но возможно это CMS мешает. Сейчас разберусь.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
14.11.2016, 16:46
Мы не ищем легких путей и намеков не понимаем
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var name = $('#name').val();
      var phone = $('#phone').val();
      var dataString = 'name=' + name + '&phone=' + phone;
                             $.ajax({
                            type: "POST",
                            url: baseDir + 'modules/CallRequest/CallRequest.php',
                            data: dataString,
                            success: function() {
                                alert('success');
                                mask.classList.remove("active");
                                call_btn.classList.remove("hidden");
                                call_form.classList.add("hidden");
                            },
                            error: function() {
                                alert("error");
                            }
                     });
это при условии что все остальное верно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.11.2016, 16:46
Помогаю со студенческими работами здесь

Ajax. Не могу вывести полученные данные из формы
Приветствую. Пробую еле-еле написать мини-чатик, человек с другого форума многое рассказал, спасибо ему. Ситуация такая: данные отсылаются,...

Как правильно передать данные Ajax?
Всем привет, подскажите как передать данные!! есть ФОРМА &lt;form enctype=&quot;multipart/form-data&quot; action=&quot;upload.php&quot;...

Как правильно считать данные в .xml файле?
Приветствую всех. Вопрос такой, есть логи утилиты AVZ, пример таких логов можете найти в разделе лечения. Меня интересует файл .xml...

Как правильно считать данные в словарь (dict) в Python 3?
Когда хочу воспользоваться функцией .keys(), то мне выдает целую строку: dict_keys() А хотелось бы просто получить названия...

Как правильно считать данные из стандартного входного потока в С++?
Как правильно считать данные из стандартного входного потока в С++? Из стандартного входного потока в C++ вводится: целое число, точка,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru