Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 29.06.2017, 16:45
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

gko11,
если клиент отправляет JSON, то на сервере не будет $_POST['name'] и прочего.

$name = htmlspecialchars($name);
$name = urldecode($name);

и далее подобное, это никчемное и не нужное.
Ответить с цитированием
  #12 (permalink)  
Старый 29.06.2017, 17:00
Интересующийся
Отправить личное сообщение для gko11 Посмотреть профиль Найти все сообщения от gko11
 
Регистрация: 29.06.2017
Сообщений: 25

if(isset($_POST['name']))
{
В начале обработчика стоит проверка,
Тут косяк в js либо в форме
Ответить с цитированием
  #13 (permalink)  
Старый 29.06.2017, 17:00
Интересующийся
Отправить личное сообщение для gko11 Посмотреть профиль Найти все сообщения от gko11
 
Регистрация: 29.06.2017
Сообщений: 25

var url = "http://search-apteki.ru/sendmail/index.php";
$.post(url,
{
name: $("#req_name").val(),
drug: $("#req_drug").val(),
phone: $("#req_phone").val(),
comment: $("#req_comment").val()
},
function(resp) {
console.log(resp);
}
);
Ответить с цитированием
  #14 (permalink)  
Старый 29.06.2017, 17:08
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

gko11, северу данные как JSON.stringify(object) переданы не будут, не отправит JQ такое. Можно так отправить 'key=' + JSON.stringify(object).

В этом случае на сервере будет получен массив под ключом key которого будет JSON, и нужно получить данные из него сначала - json_decode.

Отправляйте просто объект как уже было сказано. А вот htmlspecialchars и urldecode выкинуть, это чушь. Первое не нужно потому, что отправление как текст, а второе потому, что urldecode будет выполнено уже.
Ответить с цитированием
  #15 (permalink)  
Старый 29.06.2017, 17:11
Интересующийся
Отправить личное сообщение для gko11 Посмотреть профиль Найти все сообщения от gko11
 
Регистрация: 29.06.2017
Сообщений: 25

Если можно код представить, я js пока только изучаю)
Ответить с цитированием
  #16 (permalink)  
Старый 29.06.2017, 17:17
Интересующийся
Отправить личное сообщение для gko11 Посмотреть профиль Найти все сообщения от gko11
 
Регистрация: 29.06.2017
Сообщений: 25

var url = "http://search-apteki.ru/sendmail/index.php";
$.post(url,
{
name: "123123",
drug: "123123",
phone: "123123",
comment: "123123"
},
function(resp) {
console.log(resp);
}
);
Пробовал делать так, но так же $_POST пустые
Ответить с цитированием
  #17 (permalink)  
Старый 29.06.2017, 17:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от gko11
Если можно код представить
$.ajax({
        type: 'post',
        url: '/sendmail/index.php', //домен не обязателен, если только не запрос на другой
        data: {
            name: $("#req_name").val(),
            drug: $("#req_drug").val(),
            phone: $("#req_phone").val(),
            comment: $("#req_comment").val()
        },
        success: function(d) {
            //Обработка ответа сервера, ответ хранится в d
        }
    })
Ответить с цитированием
  #18 (permalink)  
Старый 29.06.2017, 17:21
Интересующийся
Отправить личное сообщение для gko11 Посмотреть профиль Найти все сообщения от gko11
 
Регистрация: 29.06.2017
Сообщений: 25

Спасибо, но не работает, мне кажется косяк в самой форме, т.к. пытался на прямую с формы отправить на обработчик, а толку 0, так жы пустые значения
Ответить с цитированием
  #19 (permalink)  
Старый 29.06.2017, 17:21
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

gko11,
Добавьте полям формы имена name, drug, phone, comment соответственно, запрос отправляйте по событию submit формы, тогда data: можно записать проще:

data: $(this).serialize()
Ответить с цитированием
  #20 (permalink)  
Старый 29.06.2017, 17:32
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от gko11
мне кажется косяк в самой форме
У вас куча косяков. Локальный сервер для отладки скриптов есть? Сохраните в нем это файл как .php под любым именем и запустите.

<?
if($_POST) {
    exit(print_r($_POST, 1)); //отправим клиенту что получили
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style>

</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(function() {
    $('#send').submit(function(e) {
        e.preventDefault();
        $.ajax({
            type: 'post',
            url: location, //заменить в реальном коде на действительный URL
            data: $(this).serialize(),
            success: function(d) {
                //Обработка ответа сервера, ответ хранится в d
                alert(d)
            }
        })
    });
});
</script>
</head>
<body>
<form id="send">
                        <div class="form-group">
                        <input class="form-control" required placeholder="Ваше имя" value="Пример" name="name" type="text">
                        </div>
                        <div class="form-group">
                        <input class="form-control" placeholder="Интересующий препарат" name="drug" value="Пример" type="text">
                        </div>
                        <div class="form-group">
                        <input class="form-control" required placeholder="Телефон" name="phone" value="Пример" type="text">
                        </div>
                        <div class="form-group">
                        <textarea class="form-control" placeholder="Комментарий" name="comment">Пример</textarea>
                        </div>
                        <div class="clearfix"></div>
                        <button type="submit" class="btn btn-request btn-block">Отправить</button>
                    </form>
</body>
</html>


Клиент в ответ получит массив, который он отправил серверу. Заменив в url текущий (location) на свой реальный, код будет отправлять и на реальный адрес. Поле INPUT для комментария неудобно.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как добавить ИЛИ внутрь селктора атрибута? sovsem-nub (X)HTML/CSS 3 18.12.2016 13:57
.htaccess и регулярные выражения или скрипт? 2chan Серверные языки и технологии 3 26.02.2016 14:23
Javascript чат-бот FanAizu Общие вопросы Javascript 5 30.01.2014 03:00
В зависимости от referrer выводить рекламу adsene или зорьки wlad2 Общие вопросы Javascript 12 19.12.2010 01:02
Как узнать свернуто окно браузера или нет. bar-boss Events/DOM/Window 3 25.09.2008 16:09