2016-10-10 107 views
-1

因此,我正在製作一個應用程序,允許我在客戶端輸入一些數據,無論是在同一網絡中運行的電話還是其他桌面。閱讀請求主體Node.js服務器

我有一個Node.js服務器,它回答我的請求,但我實際上無法在服務器端「讀取」它們。

這是我的服務器代碼

var http = require("http"); 

var parseString = require('xml2js').parseString; 

var express = require('express') 
var app = express(); 
var port = process.env.PORT || 8081; 


var request = require('request'); 


app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    next(); 
}); 


// start the server 
app.listen(port); 
console.log('Server started! At http://localhost:' + port); 


// routes will go here 
app.use('/static', express.static('.')); 

var bodyParser = require('body-parser'); 
app.use('/browse', bodyParser.json()); // support json encoded bodies 
app.use('/browse', bodyParser.urlencoded({ extended: true })); // support encoded bodies 


app.get('/', function(req, res, next) { 
    // Handle the get for this route 
}); 

app.post('/', function(req, res, next) { 
// Handle the post for this route 
}); 


// POST http://localhost:8081/browse 
app.get('/browse', function(req, res) { 
    var browseRequest = req.body.browseRequest; 
    console.dir("browseRequest: "); 
    console.dir(browseRequest); 

    res.send(JSON.stringify("response")); 

}); 

(我有多餘的東西在這裏?)

這是我使用我的html頁面

// Create the XHR object. 
    function createCORSRequest(method, url) { 

     var xhr = new XMLHttpRequest(); 
     if ("withCredentials" in xhr) { 
     // XHR for Chrome/Firefox/Opera/Safari. 
     xhr.open(method, url, true); 
     } else if (typeof XDomainRequest != "undefined") { 
     // XDomainRequest for IE. 
     xhr = new XDomainRequest(); 
     xhr.open(method, url); 
     } else { 
     // CORS not supported. 
     xhr = null; 
     } 
     return xhr; 
    } 


    // Make the actual CORS request. 
    function makeCorsRequest() { 
     // This is a sample server that supports CORS. 
     var url = "http://192.168.0.100:8081/browse" 
     var xhr = createCORSRequest('GET', url); 
     if (!xhr) { 
     alert('CORS not supported'); 
     return; 
     } 

     //xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); 

      var req = { "browseRequest": { 
       "name": "Aaron", 
       "type": "Consumer", 
       "age": 21 

      }}; 
      xhr.send(JSON.stringify(req)); 

    } 

部分我得到由我的客戶端上的服務器發送的字符串,但我無法訪問服務器中的browserequest,因爲req.body即將空白。

我在這裏錯過了什麼? 謝謝!

+0

你沒有告訴服務器你發送了什麼。 (註釋部分) –

+0

我之前評論過它,因爲我收到了CORS錯誤。 即使沒有註釋,我仍然有空身體。 任何提示? – seugnimod

回答

-1

GET參數(主要)沒有身體。 (Read this

您可以req.paramsreq.query

獲取參數,但在你的Ajax調用,你必須queryString您的數據。

+0

可以通過GET請求發送JSON正文,並且body-parser確實支持這一點。 –

+0

您可以給我一個工作示例,讓一個Ajax調用一個json主體...我不確定瀏覽器允許在GET請求中傳遞主體...(我知道這可能與CURL) –

+0

感謝您的輸入史蒂夫。我還想看看@凱文的例子。 – seugnimod