jquery + post = fail - где ошибка?

123
M2
На сайте с 11.01.2011
Offline
341
#11

Ещё раз.

js/ajax.js


$(document).ready(function() {
$("#submitLogin").click(function() {
$.ajax({
url: "../ajax/login.php",
type: "POST",
data: {form: $('#formLogin').serialize()},
dataType: "json",
success: function(html) {
var res = $.parseJSON(html);
alert(res);
},
error: function() {
alert('error');
}
});
});
});

login.html


<form id="formLogin" method="post" action="">
<div class="form-group">
<label for="login">Login: </label>
<input id="login" name="login" placeholder="Enter login">
</div>
<div class="form-group">
<label for="password">Password: </label>
<input id="password" name="password" type="password" placeholder="Enter password" />
</div>
<button class="btn btn-primary" id="submitLogin">Submit</button>
</form>
<div id="result"></div>

ajax/login.php


$result = array("form" => $_POST['form']);

echo json_encode($result);
die();

На вкладке "Сеть" всё передается и всё получается, единственное что - ответ от login.php нулевой, несмотря на то, что кол-во переданных байт положительное. С этим, вероятно, и связан error...

1) Файл ajax.js находится в папке /js/

2) Файл login.php, к которому идет обращение, находится в папке /ajax/.

------------------- Крутые VPS и дедики. Качество по разумной цене ( http://cp.inferno.name/view.php?product=1212&gid=1 ) VPS25OFF - скидка 25% на первый платеж по ссылке выше
ДП
На сайте с 23.11.2009
Offline
203
#12

В login.php сделайте

echo json_encode($_POST);

и посмотрите что у вас там реально приходит на сервер.

Samail
На сайте с 10.05.2007
Offline
369
#13

Вместо

var res = $.parseJSON(html);

alert(res);

наверное нужно:

alert(html["form"]);
M2
На сайте с 11.01.2011
Offline
341
#14
Дикий пионер:
В login.php сделайте
echo json_encode($_POST);

ДП
На сайте с 23.11.2009
Offline
203
#15

Если кликнуть на эту строку то можно будет посмотреть что уходит на сервер, например.

Так-то если по уму - то я бы отладчиком прошёлся. Обычно, если нулевой ответ, то какая-то ошибка на сервере, но код 200 смущает.

S
На сайте с 13.10.2014
Offline
171
#16

1. исходящие данные от сервера в 0 байт. не настораживают?

2. Перед посылкой данных с сервера, в виде джейсона неплохо бы передать и хедер

$responce = array(
'login' => (!empty($_POST['login']))?$_POST['login']:'empty_login',
'password' => (!empty($_POST['password']))?$_POST['password']:'empty_password',
);

header('Content-Type: text/json');
print json_encode($responce);


---------- Добавлено 15.06.2018 в 15:38 ----------

3. парсить json нет необходимости, так как данные парсятся автоматически

success: function(html) {
var res = html.variable
alert(res);
},

этого вполне достаточно

---------- Добавлено 15.06.2018 в 15:40 ----------

И передавать данные формы на сервер тоже можно гораздо проще

не

{form: $('#formLogin').serialize()},
а
$('#formLogin').serialize(),
M2
На сайте с 11.01.2011
Offline
341
#17

silicoid,

всё сделал в соответствии с вашим постом. Не работает!

От сервера приходит 0 байт.... ума не приложу, в чём дело!

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#18
mark2011:
silicoid,
всё сделал в соответствии с вашим постом. Не работает!
От сервера приходит 0 байт.... ума не приложу, в чём дело!

А просто в браузере то открывает это файл? Пробовали выводит в нём что-то?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
M2
На сайте с 11.01.2011
Offline
341
#19

LEOnidUKG,

Смотрите, такая ситуация. Когда в файле прописано


header("Content-type: text/json")

браузер, естественно, предлагает скачать этот файл.

Если этот заголовок убрать - файл открывается абсолютно нормально.

Но ajax не работает ни так, ни так. От сервера 0 байт. Я уже даже и не знаю, каким дебаггером проходиться и где вообще копать. Раньше я работал с ajax, в принципе понимаю, что в целом код верный. Единственное что - я работал с гораздо более ранними версиями, но здесь в плане $.ajax по-моему ничего не поменялось.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#20

загружайте всё на сервер и дайте доступ на тест.

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий