2014-01-15 2 views
0

Получил регистрационную форму с помощью скрипта ajax, POSTing to nodejs backend. Проблема заключается в том, что запрос ajax висит на протяжении 30-60 секунд перед выполнением «ошибок» или (иногда!) Событий «успеха». Если тайм-аут установлен, ошибка срабатывает через 3 секунды. Бэкэнд узла немедленно выводит результаты на консоль. Что-то не так с ajax или backend?ajax не получает ответ от nodejs

HTML:

<form id="add" action="" class="col-md-3"> 
     <div class="form-group"> 
      <label class="input">username</label> 
      <input type="text" name="username" id="username"> 
     </div> 
     <div class="form-group"> 
      <label class="input">pass</label> 
      <input type="password" name="pass" id="pass" class=""> 
     </div> 
     <div class="form-group"> 
      <input type="hidden" name="new" value="new" id="new"> 
      <input type="hidden" name="role" value="admin" id="role"> 
     </div> 
     <div id="submit" class="btn">Add</div> 

JQuery:

$(function() { 


     $('#submit').on('click', function() { 

      var form = $('#add'); 
      var data = {"username":$('#username').val(), "password": $('#pass').val() , "role": $('#role').val(), "new": $('#new').val()} 

      alert ('ajax start: ' + JSON.stringify(data)); 
      $.ajax({ 
       url: '/add', 
       type: 'POST', 
       data: data, 
    //   timeout : 3000, 

       success: function(responseText, statusText, xhr) { 
        console.log("Worked!" + responseText); 
        alert ('success'); 

       }, 
       complete: function() { 
        alert ('complete'); 

       }, 
       error: function(err) { 
        console.log('err:'); 
        console.log(err); 
        alert ('err: ' + err.statusCode() + " " + err.statusText); 
       } 
      }); 
     }); 
    }); 

маршрут для обработки запроса:

module.exports = function(req, res) { 
     if (req.body.hasOwnProperty("new")){ 
      //add new user 
      console.log('new'); 
      var Auth = app.locals.Auth; 
      Auth.register(req, function (err){ 
       console.log('ended registration'); 
       if (err){ 
        console.log('err: ' + err + res); 

        res.json({"err":err}); 
       }else{ 
        console.log('successfully registered'); 
        res.json({"success":'success'}); 
       } 
       console.log('res.end'); 
       res.end(); 
       console.log('return'); 
       return ; 
      }); 

ответ

1

Проблема была в коде маршрута:

res.end(); 

просто нужно, чтобы удалить эту строку

0

Кажется, тыс e хорошо код для меня. Фактически только изменение, я мог бы предложить вам добавить код ошибки, а также код успеха для вашего ответа.

Success: res.json(200, {"success": "success"});

Ошибка: res.json(400, {"error": err});

+0

Джей Шри Рам. Еще очень долго ждать. – Schtz

+0

Вы получаете ответ? –

+0

js Консоль немедленно записывает «400 - плохой запрос», но «завершение» запускается намного позже – Schtz

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