使用 Node.js / Express 服务器进行 ajax GET 调用

发布于 2024-11-29 06:43:13 字数 908 浏览 0 评论 0原文

我正在尝试为 node.js 编写一个小型 ajax 实时搜索。首先,这是我的客户端代码:

  $('#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');
});

它可以工作,但我没有收到任何数据。回调函数中的数据始终为空。那么我做错了什么?谢谢你的帮助

I´m trying to write a small ajax live search for node.js. First of all here is my Clientside code:

  $('#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); }
    });
}

and here ist my serverside route:

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');
});

it works but i don´t recieve any data. data in the callback function is always null. so what i am doing wrong? thx for the help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱格式化 2024-12-06 06:43:13

更改

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

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

Change

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

to

$.ajax('/matchword' + value + '/', {
不爱素颜 2024-12-06 06:43:13

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

What's the URL that you're making the $.ajax() request from? If the page containing that client-side JS wasn't also loaded from 127.0.0.1:3000, the error you're seeing is due to the same-origin requirement on AJAX requests.

吃素的狼 2024-12-06 06:43:13

嘿,迟到总比不到好……

我正在研究你的问题,因为我也在尝试将简单的实时搜索与express.js 后端结合在一起。

首先,我将您的网址放入本地变量中。因为我不认为那是你的问题。
特别是如果您的 Express / Node 日志显示 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 变量是代码中其他位置的编码身份验证对(如果您的网络服务需要某种身份验证...

hey better late than never...

I was looking at your problem because I am also trying to put a simple live search together with an express.js back end.

first of all I put your url into a local variable. As I don't think that was your problem.
Particularly if your express / node log was showing a 200 response. then the url was fine...

It seems your function wasn't returning data (correct ?) if so try this.

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 );
        }
    });
}

you might also need to add / modify your headers subject to the set up...

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

the auth variable being an encoded auth pair somewhere else in your code (if your web service is requires some kind of auth...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文