我是Node.js上的新手。我想在這裏做的是發送一些json格式的數據,從客戶端javascript到express.js服務器。一旦我可以做到這一點,我將使用已發送到服務器的參數來進一步從MongoDB中檢索信息。客戶端代碼非常簡單,一個點擊事件:JQuery Ajax Post無法發送數據(json)到express.js服務器
$.ajax({
url: 'http://localhost:8020/1',
type: 'post',
dataType: 'jsonp',
data: JSON.stringify({name: "test"}),
contentType: 'application/json',
success: function(data){
alert("success");
alert(data);
}
});
在服務器端,代碼如下:
var express = require('express');
var app = express();
var cons = require('consolidate'),
MongoClient = require('mongodb').MongoClient,
Server = require('mongodb').Server;
var mongoclient = new MongoClient (new Server('localhost', 27017,
{'native_parser' : true}));
var db=mongoclient.db('test');
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.all('/*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
});
app.get('/1', function (req, res) {
db.collection('test').findOne({}, function (err, doc){
console.log(doc);
});
console.log(JSON.stringify(req.body));
var x = req.body.name;
console.log(x);
res.send({});
});
app.post('/1', function (req, res){
db.collection('test').findOne({}, function (err, doc){
console.log(doc);
});
console.log(req.body);
});
mongoclient.open(function (err, mongoclient) {
if (err) throw err;
app.listen(8020);
console.log("listening on port 8020");
});
當我做客戶端AJAX調用,似乎服務器端代碼成功返回了我mongoDB數據庫中的一個項目,但是在這種情況下,它無法捕獲數據,即{name:「test」}。以下是觸發點擊事件時服務器端控制檯的輸出:
{}
undefined
{ _id: 5522f3368d21ba45c6263402, apple: 'juice' }
任何人對此有什麼想法?這是與跨域問題有關嗎?非常感謝你!
幾乎沒有足夠的信息串
是一個適當的問題。建議學習一些ajax教程,然後提供更具體的代碼相關問題 – charlietfl
無法使用jsonp數據類型進行POST。 –