2017-09-02 2 views
1

GET応答から何らかのオブジェクト値をコンソールログに出力するには、ui/printにレンダリングします。オブジェクトをRESTレスポンスからレンダリングする方法

私はサーバー側にNode JSを使用し、クライアント側にはHTML + JSを使用しています。

私の目標はデータをレンダリングすることであり、要求タイプはクロスドメインであるため、「フェッチ」機能を使用することはできません。 これを実行する唯一の方法は、「JSONP」データタイプで送信することです。

実際にはリクエストが送信され、応答はコールバックでも受信されますが、コードはレスポンスデータではなくコンソールに「null」と表示されます。 JSON.parse()を使用しようとすると、「parseerror」が返されました。

イメージタグ値(2.0.90)のみを取得し、これをコンソールログ内に印刷するか、UIに表示します。あなたが結果などを返すように応答を反復処理する必要がある

async function uiChecking() { 
    let index; 
    const hostsDock = [qa + dockers]; 
    let lengthVal = hostsDock.length; 
    for (let hostIndxD = 0; hostIndxD < lengthVal; hostIndxD++) { 
     index = hostIndxD; 
     let url = hostsDock[hostIndxD]; 

     $.ajax({ 
      url: url, 
      dataType: 'jsonp', 
     }).done(function(data) { 
      console.log("A " + data); 
     }); 

    } 
} 

** Server.js **

var express = require('express'); 
var cors = require('cors'); 
var app = express(); 
var path = require("path"); 
var fetch = require('fetch-cookie')(require('node-fetch')); 
var btoa = require('btoa'); 
var http = require('http'); 


var corsOptionsDelegate = function (req, callback) { 
    var corsOptions; 
    if (whitelist.indexOf(req.header('Origin')) !== -1) { 
     corsOptions = { origin: true } // reflect (enable) the requested origin in the CORS response 
    }else{ 
     corsOptions = { origin: false } // disable CORS for this request 
    } 
    callback(null, data , corsOptions) // callback expects two parameters: error and options 
}; 

app.engine('.html', require('ejs').__express); 
app.set('views', __dirname + '/view'); 
app.set('view engine', 'html'); 


app.use(express.static(path.join(__dirname, 'public'))); 

app.get('/', function(req, res){ 
    res.render('index'); 
    res.render('logo'); 
    res.writeHead(200, {'Content-Type': 'application/json'}); 
}); 

// app.get('/products/:id', cors(corsOptionsDelegate), function (req, res, next) { 
//  res.json({msg: 'This is CORS-enabled for a whitelisted domain.'}) 
// }); 


app.get('/data/:id', function (req, res, next) { 
    var opts = { 
     host: config.alertService.host, 
     port: config.alertService.port, 
     method: 'GET', 
     path: '/DataService/rest/receiveData/' + req.params.id 
    } 

    var reqGet = http.request(opts, function (dataResponse) { 
     var responseString = ''; 
     dataResponse.on('data', function (data) { 
      responseString += data; 
     }); 
     var response = {x:[],y:[],z:[],t:[]}; 
     dataResponse.on('end', function() { 
      var responseObject = JSON.parse(responseString); 
      var accs = responseObject.data.listPCS; 
      for(var i in accs){ 
       response.x.push(accs[i].accX); 
       response.z.push(accs[i].accY); 
       response.y.push(accs[i].accZ); 
       response.t.push(accs[i].timestamp); 
      } 
      res.jsonp(response); 
     }); 
    }); 
    reqGet.end(); 
    reqGet.on('error', function (e) { 
     console.error(e); 
    }); 
}); 

if (app.settings.env === 'production') { 
    app.error(function(err, req, res) { 
     res.render('new404.html', { 
      status: 500, 
      locals: { 
       error: error 
      } 
     }); 
    }); 
} 

app.listen(8033, function() { 
    console.log('CORS-enabled web server listening on port 8033') 
}); 

enter image description here

+0

カントますすでにオブジェクトにアクセスしていますか?好き。 '成功:関数(データ){ console.log(data [0] .id); } '等 – keja

+0

それはうまくいきません、それは" parseerror "とコンソールにログを受け取る - {readyState:4、setRequestHeader:ƒ、getAllResponseHeaders:ƒ、getResponseHeader:ƒ、overrideMimeType:ƒ、...} –

+0

これは、非同期関数である必要があります。 – programmer5000

答えて

0

$.each(data, function(index) { 
    console.log(data[index].ui); 
    console.log(data[index].id); console.log(data[index].Name); 
}); 
+0

ありがとうございますが、すべての引数に対して "undefined"が返されます:/ –

関連する問題