Я пытаюсь добавить пользователей в базу данных, используя jquery ajax calls. Пользователи добавили просто отлично в базу данных, но ajax всегда возвращается с ошибкой. Я также не знаю, как получить конкретную ошибку. Ниже приведен код, форму, php и jquery.
Вот jQuery
$(document).ready(function() { //ajax call for all forms. $('.button').click(function() { var form = $(this).closest('form'); $.ajax({ type: "POST", url: form.attr('data'), dataType: 'json', data: form.serialize(), success: function (response) { alert('something'); }, error: function() { alert('fail'); } }); }); });
Вот PHP
<?php include 'class_lib.php'; if(isset($_POST['username'])) { $user = new Users; $user->cleanInput($_POST['username'], $_POST['password']); if($user->insertUser()) { echo json_encode('true'); } else { echo json_encode('false'); } }
Вот HTML
<div id='newUser' class='tool'> <h3>New User</h3> <form method='post' name='newUser' data='../php/newUser.php'> <span>Username</span><input type='text' name='username'><br> <span>Password</span><input type='password' name='password'> <input type='submit' name='submit' class='button' style='visibility: hidden'> </form> <span class='result'> </span> </div>
@Musa, выше вы упомянули
Я предполагаю, что это ошибка синтаксического анализа, попробуйте удалить dataType: 'json' и посмотреть, работает ли она
Вы полностью решили проблему, с которой я столкнулся! Мой запрос на отправку ajax был похож на предыдущий, и он просто возвращался в раздел «ошибка». Хотя я проверил использование firebug, статус был 200 (ok), и ошибок не было.
удаление 'dataType: json' решило эту проблему для меня. Большое спасибо!
Оказывается, мне пришлось добавить async: false
в функцию $ .ajax. Он не получал ответа от php.
У меня была такая же проблема и открытие. Все время проблема в версии моего jQuery, у меня была версия jquery (jquery-1.10.2.js), но эта версия не была Ajax стабильной. Итак, я меняю версию для (jquery-1.8.2.js), и это чудо перевернулось.
Удачи!
Я знаю, что это старый вопрос, но я просто столкнулся с такой странной ситуацией ( jquery ajax возвращает успех при прямом выполнении, но возвращает ошибку при подключении к кнопке, даже если ответ сервера 200 )
И обнаружил, что с помощью кнопки внутри тегов form
JQuery всегда возвращал ошибку. Простое изменение тегов form
на div
решило проблему.
Я считаю, что JQuery предполагает, что сообщение должно быть закодировано в форму, даже если вы говорите, что это application/json
.
Попробуйте переместить свою кнопку вне формы и посмотреть, что произойдет …
Вы должны указать код состояния 200 для успешного ответа.
<?php http_response_code(200); ?>
См. Здесь: http://php.net/manual/en/function.http-response-code.php