2016-01-11 3 views
3

Эта ошибка возникает, когда изменение даты ввода даты происходит очень быстро. Если я меняю дату каждые 2+ секунды, она работает нормально. Но это приводит к следующей ошибке, когда ввод даты изменяется очень быстро. Короче говоря, эта ошибка возникает только тогда, когда следующий запрос выполняется сразу после первого очень быстро. Я потратил часы и искал много подобных проблем с этой ошибкой ERR_CONNECTION_REFUSED на SO и google, но не повезло. Любые идеи о том, что вызывает эту проблему?net :: ERR_CONNECTION_REFUSED Ошибка jQuery ajax node.js

Кроме того, когда нагрузка URL-адрес (http://localhost:8000/svc/diary/2016-01-03) в браузере, данные выходит хорошо, но если я перезагружать (Ctrl + R) URL-адрес очень быстро, она идет поиск Yahoo с этими условиями:

HTTP 8000 SVC локального дневник 2016 01 03 дневник

Ошибка Сообщение из консоли:

GET http://localhost:8000/svc/diary/2016-01-03 net::ERR_CONNECTION_REFUSED 
     send @ jquery-2.2.0.js:9172 
     jQuery.extend.ajax @ jquery-2.2.0.js:8653 
     (anonymous function) @ idiary.js:18 
     jQuery.event.dispatch @ jquery-2.2.0.js:4732 
     elemData.handle @ jquery-2.2.0.js:4544 

даты формы

<input class="form-control" id='ddate' type="date" name="bday"> 


Аякса Вызов

$('#ddate').on('change', function() { 
    var ajaxParams = { 
     url: '/svc/diary/' + $(this).val(), 
     type: 'GET', 
     contentType: "application/json", 
     dataType:"json" 
    }; 
    console.log(ajaxParams); 
    $.ajax(ajaxParams) 
     .done(function (data, textStatus, jqXHR) { 
      console.log("diary retrieved!") 
      console.log(data); 
      $("#diary").text(data.diary); 

     }) 
     .fail(function (jqXHR, textStatus, errorThrown) { 
      $("#diary").text(""); 
      console.log("failed to retrieve diary!"); 
      console.log(errorThrown); 
     }); 
}); 


Бэкэнд node.js GET обработчик

function getDiary(req, res) { 
    var date = req.params.date; 
    util.log(mysql.format(searchQuery, [date])); 
    util.dbpool.query(searchQuery, [date], function (err, result) { 
     res.setHeader("Content-Type", "application/json"); 
     if (err) { 
      console.log(err); 
      util.errLog(JSON.stringify(err)); 
      res.status(500).json({message: 'summary, no results.'}); 
     } else { 
      console.log(result); 
      result.length > 0 ? res.status(200).json(result[0]) : res.status(200).json({"ddate":date, "diary":""}); 
     } 
    }); 
} 


UPDATE: Только что узнал, эта проблема исчезает при запуске сервера приложений узел с

node server.js 

Эта проблема происходит только при запуске сервера приложений узла с пм2 или foerver

pm2 start --watch server.js 
forever start --watch server.js 

ответ

1

Проблема решена. Это было вызвано использованием флага часов в pm2 и навсегда. Мое приложение печатает записи журнала, а папка журнала находится на том же уровне, что и папка приложения, поэтому всякий раз, когда файл журнала обновляется, pm2 перезапускает мой сервер приложений. Вот почему он работает, если я привязываю свой сервер приложений каждые несколько секунд, потому что перезагрузка сервера занимает около секунды. Это дает отказ в соединении с ошибкой, если я подключаю сервер очень быстро, потому что сервер все еще перезагружается, поэтому его соединение отказано.

0

Вы хотите сделать запрос на перекрестный домен. По умолчанию сервер запрещает это. Вам нужно включить его на своем сервере и сделать запрос JSONP. Вы можете прочитать об этом здесь:

http://www.leggetter.co.uk/2010/03/12/making-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html

What is JSONP all about?

+0

Все находится на localhost: 8000, как это кросс-доменный запрос? –

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