簡體   English   中英

json的node.js http.request,在json前面未定義

[英]node.js http.request for json, undefined in front of the json

我正在嘗試通過node.js從embed.ly獲取數據。

一切看起來都不錯,但是它在數據前放置了“ undefined”:

也許與setEncoding('utf8)有關?

結果看起來像這樣:

undefined[{ validjson }]

功能:

function loadDataFromEmbedLy( params, queue ){

  try {

    var body;

    var options = {
      host: 'api.embed.ly',
      port: 80,
      path: '/1/oembed?wmode=opaque&key=key&urls='+params,
      method: 'GET',
      headers: {'user-agent': ''}
    };

    var req = http.request(options, function(res) {

      res.setEncoding('utf8');

      res.on('end', function() {

        if( typeof body != 'undefined' ){

          console.log( body );

        }


      });

      res.on('data', function ( chunk ) {

        if( typeof chunk != 'undefined' ){

          body += chunk;

        }

    });

  });

  req.on('error', function(e) {

    console.log('problem with request: ' + e.message);

  });

  req.end();

} catch(e) { console.log("error " + e); } 

}

這是因為body最初是未定義的。 當使用+=附加到它時,它將附加到字符串“ undefined”。 我希望這是有道理的。

解決方案:將body聲明為空字符串: var body = "";

第二:我真的建議您查看Mikeal Rogers的請求

編輯:請求比基本的HTTP api容易一些。 你的例子:

function loadDataFromEmbedLy (params) {
    var options = {
      url: 'http://api.embed.ly/1/oembed',
      qs: {
        wmode: 'opaque',
        urls: params
      },
      json: true
    };
    request(options, function (err, res, body) {
      console.log(body);
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM