繁体   English   中英

ajax GET 调用与 node.js / 快递服务器

[英]ajax GET call with node.js / express server

我正在尝试编写一个小的 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');
});

它有效,但我没有收到任何数据。 回调 function 中的数据始终为 null。 所以我做错了什么? 谢谢帮助

改变

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

$.ajax('/matchword' + value + '/', {

您发出 $.ajax() 请求的 URL 是什么? 如果包含该客户端 JS 的页面也未从 127.0.0.1:3000 加载,则您看到的错误是由于 AJAX 请求的同源要求所致。

嘿,迟到总比没有好……

我正在查看您的问题,因为我还尝试将简单的实时搜索与 express.js 后端放在一起。

首先,我将您的 url 放入局部变量中。 因为我不认为那是你的问题。 特别是如果您的 express / node 日志显示 200 响应。 然后 url 很好...

看来您的 function 没有返回数据(正确吗?)如果是这样试试这个。

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 变量是代码中其他地方的编码身份验证对(如果您的 web 服务需要某种身份验证...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM