ajax GET вызов с node.js / экспресс-сервером - PullRequest
0 голосов
/ 14 августа 2011

Я пытаюсь написать небольшой ajax живой поиск для node.js.Прежде всего, вот мой код клиента:

  $('#words').bind('keyup', function(){
    getMatchingWords($('#words').val(), function (data){
      console.log('recieved data');
      console.log(data);
      $('#ajaxresults').show();
    });
  });

function getMatchingWords(value, callback) {
    $.ajax('http://127.0.0.1:3000/matchword/' + value + '/', {
        type: 'GET',
        dataType: 'json',
        success: function(data) { if ( callback ) callback(data); },
        error  : function()     { if ( callback ) callback(null); }
    });
}

, а вот мой маршрут на сервер:

app.get('/matchword/:value', function(req, res) {
      console.log(req.params.value);
      res.writeHead(200, {'content-type': 'text/json' });
      res.write( JSON.stringify({ test : 'test'}) );
      res.end('\n');
});

он работает, но я не получаю никаких данных.данные в функции обратного вызова всегда равны нулю.так что я делаю не так?спасибо за помощь

Ответы [ 3 ]

7 голосов
/ 14 августа 2011

Изменить

$.ajax('http://127.0.0.1:3000/matchword/' + value + '/', {

на

$.ajax('/matchword' + value + '/', {
2 голосов
/ 14 августа 2011

С какого URL вы делаете запрос $ .ajax ()?Если страница, содержащая этот клиентский JS, также не была загружена из 127.0.0.1:3000, вы видите ошибку, связанную с требованием того же происхождения в запросах AJAX.

1 голос
/ 06 ноября 2013

эй, лучше поздно, чем никогда ...

Я смотрел на вашу проблему, потому что я также пытаюсь объединить простой поиск в реальном времени с серверной частью express.js.

прежде всего я поместил ваш URL в локальную переменную. Поскольку я не думаю, что это была ваша проблема. Особенно, если в вашем журнале экспресс / узел отображался ответ 200. тогда URL был в порядке ...

Кажется, ваша функция не возвращала данные (правильно?), Если это так, попробуйте это.

var search_url = "..."// your url

function getMatchingWords(value, callback) {
    $.ajax(search_url, {
        type: 'GET',
        dataType: 'json',
        success: function (data, textStatus, jqXHR) {
            var returned_data = data;
            console.log("returned_data ="+returned_data);//comment out or remove this debug after test
            callback(returned_data);
        },
        error: function( req, status, err ) {
            console.log( 'something went wrong', status, err );
        }
    });
}

вам также может понадобиться добавить / изменить заголовки в зависимости от настроек ...

        headers : { Authorization : auth },
        type: 'GET',
        dataType: 'json',  
        crossDomain:true,

Переменная auth является закодированной парой auth где-то еще в вашем коде (если ваш веб-сервис требует какой-то аутентификации ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...