저는 Node.js를 처음 사용하며, ajax를 통해 비동기 적으로 jsonp 데이터를 가져 와서 검색된 내용을 그래프로 표시하는 메소드를 작성했습니다. 일반 응용 프로그램에서와 마찬가지로jsonp 데이터를 생성하고 전달할 수 없습니다.
function loadChart(destElementId, alertId) {
$.ajax({
url:'http://localhost:3000/products/data/productsData.js',
type: "GET",
data: {prodId: prodId},
jsonp: true,
dataType : 'json',
jsonpCallback: "jsonpCallback"
});
window["jsonpCallback"] = function(data) {
populateData(data, destId);
}
}
, 내가 외부 웹 서비스를 통해 가져온 실제 데이터를 전달하려는 : 포함 (이 경우 productsData.js) 정적 JS 파일에 대한 URL 포인트 JSONP 데이터를 할 때이 방법은 잘 작동합니다. 특정 웹 서비스에서 데이터를 검색하는 다음 js 파일 (data-client.js)을 만들었습니다. 호출이 브라우저 기반 일 때, 데이터는 정상적인 json으로 성공적으로 반입되고 브라우저에 따라 표시됩니다.
var express = require('express');
var router = express.Router();
var http = require('http');
var yaml_config = require('node-yaml-config');
var config = yaml_config.load(__dirname + '/../config/app-config.yml');
router.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.json(response);
});
});
reqGet.end();
reqGet.on('error', function (e) {
console.error(e);
});
});
module.exports = router;
라이브 JSONP 데이터를 사용하기위한 첫 단계로 이전 URL 값을 대체하는 것이다
번째 단계는 데이터 client.js로 대체하는url: 'http://localhost:3000/products/data/'+productId,
:
res.json(response);
어떻게 든
res.jsonp('jsonpCallback('+ JSON.stringify(response) + ');');
:와
데이터는 반입되지 않습니다. 나는 브라우저를 통해 데이터를 얻을 때 (즉, http://localhost:3000/data/ID937을 입력하여) 나는 다음과 같은 결과를 얻을 수 있지만 : 문제가 될 수있다
이"jsonpCallback({\"x\":[1,1,1],\"y\":[2,1,4],\"z\":[0,0,9],\"t\":[1462790772000,1462790772010,1462790772020]});"
누군가가 말해 주실 수 있습니까? 나는 매우 감사 할 것입니다.
쿠엔틴, 정말 고마워! – Anto