29.06.2017, 16:45
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
gko11,
если клиент отправляет JSON, то на сервере не будет $_POST['name'] и прочего.
$name = htmlspecialchars($name);
$name = urldecode($name);
и далее подобное, это никчемное и не нужное.
|
|
29.06.2017, 17:00
|
Интересующийся
|
|
Регистрация: 29.06.2017
Сообщений: 25
|
|
if(isset($_POST['name']))
{
В начале обработчика стоит проверка,
Тут косяк в js либо в форме
|
|
29.06.2017, 17:00
|
Интересующийся
|
|
Регистрация: 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);
}
);
|
|
29.06.2017, 17:08
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
gko11, северу данные как JSON.stringify(object) переданы не будут, не отправит JQ такое. Можно так отправить 'key=' + JSON.stringify(object).
В этом случае на сервере будет получен массив под ключом key которого будет JSON, и нужно получить данные из него сначала - json_decode.
Отправляйте просто объект как уже было сказано. А вот htmlspecialchars и urldecode выкинуть, это чушь. Первое не нужно потому, что отправление как текст, а второе потому, что urldecode будет выполнено уже.
|
|
29.06.2017, 17:11
|
Интересующийся
|
|
Регистрация: 29.06.2017
Сообщений: 25
|
|
Если можно код представить, я js пока только изучаю)
|
|
29.06.2017, 17:17
|
Интересующийся
|
|
Регистрация: 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 пустые
|
|
29.06.2017, 17:17
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от 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
}
})
|
|
29.06.2017, 17:21
|
Интересующийся
|
|
Регистрация: 29.06.2017
Сообщений: 25
|
|
Спасибо, но не работает, мне кажется косяк в самой форме, т.к. пытался на прямую с формы отправить на обработчик, а толку 0, так жы пустые значения
|
|
29.06.2017, 17:21
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
gko11,
Добавьте полям формы имена name, drug, phone, comment соответственно, запрос отправляйте по событию submit формы, тогда data: можно записать проще:
data: $(this).serialize()
|
|
29.06.2017, 17:32
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от 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 для комментария неудобно.
|
|
|
|