使用ajax从节点js服务器获取json信息

时间:2017-02-25 19:29:04

标签: javascript jquery ajax node.js request

我正在尝试获取ajax调用我的节点js服务器并将json主体返回给客户端。

这是我的ajax呼叫代码。

self.information = function() {
      $.ajax({
          type: 'GET',
          url: 'http://localhost:3000/getIOT',
          contentType: 'application/json; charset=utf-8'
      })
      .done(function(result) {
        console.log(result);
      })
      .fail(function(xhr, status, error) {
          console.log(error);
      })
      .always(function(data){
      });
  }
}

这是节点js代码。

app.get('/getIOT', function (req, res , err) {
            request({
            'auth': {
                'user': 'masnad',
                'pass': 'whatstodaysrate',
                'sendImmediately': true
            },
            url: 'https://get.com/getAuroraRate?Amount=1000',
            method: 'GET',
        }, function (error, request, body) {
            console.log(body);
            return response.end(JSON.stringify(body));
        })
});

我得到的错误是net :: ERR_CONNECTION_REFUSED,并且正文不会返回到ajax调用。

/Users/nihit/Documents/node/multiple-js/server/server.js:36
            return response.end(JSON.stringify(body));
                   ^

ReferenceError: response is not defined
    at Request._callback (/Users/nihit/Documents/node/multiple-js/server/server.js:36:20)
    at Request.self.callback (/Users/nihit/Documents/node/multiple-js/node_modules/request/request.js:186:22)
    at emitTwo (events.js:106:13)
    at Request.emit (events.js:192:7)
    at Request.<anonymous> (/Users/nihit/Documents/node/multiple-js/node_modules/request/request.js:1081:10)
    at emitOne (events.js:96:13)
    at Request.emit (events.js:189:7)
    at IncomingMessage.<anonymous> (/Users/nihit/Documents/node/multiple-js/node_modules/request/request.js:1001:12)
    at Object.onceWrapper (events.js:291:19)
    at emitNone (events.js:91:20)

不确定我做错了什么。

1 个答案:

答案 0 :(得分:2)

你有一个拼写错误:response应该是res

app.get('/getIOT', function (req, res , err) { // <-- response is 'res'
        request({
        'auth': {
            'user': 'masnad',
            'pass': 'whatstodaysrate',
            'sendImmediately': true
        },
        url: 'https://get.com/getAuroraRate?Amount=1000',
        method: 'GET',
    }, function (error, request, body) {
        console.log(body);
        return res.end(JSON.stringify(body)); // <-- res
    })
});

<强>附录:

根据您在下面的评论,可以对您的请求进行一些清理:

$.ajax({
    type: 'GET',
    url: 'http://localhost:3000/getIOT',
    dataType: 'json',                              // <-- add this
    contentType: 'application/json; charset=utf-8' // <-- remove this
})
.done(function(result) {
    console.log(result);
})
.fail(function(xhr, status, error) {
    console.log(error);
})
.always(function(data){
});

<强>解释

  • dataType告诉jQuery将返回的数据解析为JSON。
  • contentType告诉服务器您发送的数据是 JSON,但您没有发送有效负载,因此您不需要在GET请求中使用此功能。