2013-09-18 7 views
7

Я пытаюсь добавить пользователей в базу данных, используя jquery ajax calls. Пользователи добавили просто отлично в базу данных, но ajax всегда возвращается с ошибкой. Я также не знаю, как получить конкретную ошибку. Ниже приведен код, форму, php и jquery.jquery .ajax всегда возвращает ошибку - данные добавляются в базу данных

здесь является 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> 
+6

Мой * догадка * является ошибка синтаксического анализа, попробуйте удалить 'DATATYPE:«JSON»,' и посмотреть, если он работает. – Musa

+0

Появляется, что он все еще выполняет функцию сбой – T0w3ntuM

ответ

6

Оказывается, я должен был добавить async: false к функции $ .ajax. Он не получал ответа от php.

+0

Спасибо, приятель, это тоже было хорошим решением –

20

@Musa, выше вы упомянули

Моя догадка его ошибка синтаксического анализа, попробуйте удалить DATATYPE: «JSON», и посмотреть, если он работает

Вы абсолютно решить эту проблему, я был иметь! Мой запрос на отправку ajax был похож на предыдущий, и он просто возвращался в раздел «ошибка». Хотя я проверил использование firebug, статус был 200 (ok), и ошибок не было.

удаление 'dataType: json' решил эту проблему для меня. Большое спасибо!

+0

Спасибо @Vicer, он работает для меня – Amir978

+0

Спасибо, также работал на меня! – YdB

+0

это решило мою проблему!спасибо, парень – Yar

2

У меня была такая же проблема и обнаружение там. Все время проблема в версии моего jQuery, у меня была версия jQuery (jquery-1.10.2.js), но эта версия не была Ajax стабильной. Итак, я меняю версию на (jquery-1.8.2.js), и это чудо перевернулось.

Удачи!

+0

это действительно сработало – engma

3

Я знаю, что это старый вопрос, но я просто запустить в странную ситуацию, как это (jquery ajax returns success when directly executed, but returns error when attached to button, even though server response is 200 OK)

И обнаружил, что наличие кнопки внутри form тегов вызвало JQuery всегда возвращает ошибку. Простое изменение тегов form на div решило проблему.

Я считаю, что JQuery предполагает, что сообщение должно быть закодировано в форме, даже если вы говорите, что это application/json.

Попробуйте переместить кнопку за пределами формы и посмотреть, что происходит ...

Смежные вопросы