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')
});
カントますすでにオブジェクトにアクセスしていますか?好き。 '成功:関数(データ){ console.log(data [0] .id); } '等 – keja
それはうまくいきません、それは" parseerror "とコンソールにログを受け取る - {readyState:4、setRequestHeader:ƒ、getAllResponseHeaders:ƒ、getResponseHeader:ƒ、overrideMimeType:ƒ、...} –
これは、非同期関数である必要があります。 – programmer5000