2017-12-21 2 views
1

내가 undefined'- 'XMLHttpRequest를 통해 PARAMS을 통과 얻으려고 nodejs는 API를

클라이언트 :

var xj = new XMLHttpRequest(); 
var params = JSON.stringify({ 
    PreviousTab: "cnn.com", 
    CurrentTab: "bbc.com" 
}); 

xj.open("GET", "http://localhost:8080/api/traceTabs", true); 
xj.setRequestHeader("Content-Type", "application/json"); 
xj.setRequestHeader ("Accept", "application/json"); 

xj.send(params); 

서버 (Node.js를)

app.get('/api/traceTabs', function (req, res) { 
    console.log('change url from ' + req.body.PreviousTab + 
    ' to ' + req.body.CurrentTab); // return 'undefined' 
     }); 

server.js 구성 (Node.js를)

var express  = require('express'); 
var app   = express(); 
var bodyParser  = require('body-parser'); 
var methodOverride = require('method-override'); 

var port = process.env.PORT || 8080;  
app.use(bodyParser.json()); 
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); 
app.use(bodyParser.urlencoded({ extended: true })); 

app.use(methodOverride('X-HTTP-Method-Override')); 
app.use(express.static(__dirname + '/public')); 

require('./app/routes')(app); 

app.listen(port); 
console.log('Listen to port ' + port);   
exports = module.exports = app;       

나는 PARAMS 돌아 가려고 한 모든 옵션은 '정의되지 않은'등

req.body.PreviousTab/req.param ('PreviousTab')와.

누군가 도움을 줄 수 있습니까?

+0

당신은 – Stamos

+1

당신이 게시하거나 PARAMS가 전송 될 때까지 둘 필요가 미들웨어 관련 서버 측 코드를 추가 할 수 있습니다 - 귀하의 브라우저 개발자 도구 네트워크 탭을 확인, 당신은 정의를 참조 더 params를 요청 –

+0

에 전송되지 않습니다 볼 수 있습니다 XM LHttpRequest send() -> https://xhr.spec.whatwg.org/#the-send()-method - GET/HEAD 요청에 대한 나의 이전 주석, body가 null로 강제된다. , PUT/POST 메서드는 본문과 함께 보낼 수있는 유일한 메서드는 아니지만 가장 일반적인 방법입니다 –

답변

0

언급 한 바와 같이 GET 또는 HEAD 요청에는 본문이있을 수 없습니다. 데이터가 큰 경우 POST 요청으로 이동해야합니다. 사용하려는 매개 변수의 예에있는 것과 같은 짧은 경우

그러나, 당신이해야 use query strings : 노드 측

var url = "bla.php"; 
var params = "somevariable=somevalue&anothervariable=anothervalue"; 
var http = new XMLHttpRequest(); 

http.open("GET", url+"?"+params, true); 
http.send(null); 

, 당신은 명시 적 사용 가정, 당신은 사용하여 변수를 읽을 수 있습니다 :

var somevariable = req.query.somevariable; 
var anothervariable = req.query.anothervariable; 
0

XMLHttlRequest.send()에서 문서 :

... If the request method is GET OR HEAD, 
the argument is ignored and the request body is set to null. 
는 POST로 보내는 방법을 변경

.