2015-10-06 46 views
3

我想發送表單數據到使用Ajax的node.js服務器,我暫停了下面的方法發送數據。如何通過發送Ajax調用將html表單數據發送到node.js服務器?

我沒有得到如何我不使用快遞框架node.js的

client.HTML

<script> 
function myFunction() { 
    var region = document.getElementById("region").value; 
    var os = document.getElementById("os").value; 
    var data = {}; 
    data.region = region; 
    data.os = os; 
    $.ajax({ 
    type: 'post', 
    datatype: 'jsonp', 
    data: JSON.stringify(data), 
    contentType: 'application/json', 
    url: 'http://127.0.0.1:8083/', //node.js server is running 
    success: function(data) { 
     alert("success"); 

    } 
    }); 

</script> 
<form> 
<select id="region" name="region" class="region"></select> 
<select id="os" name="os" class="os"></select> 
<input type="button" value="search" class="fil_search" onclick="myFunction()"/> 
</form> 

server.js中的node.js服務器程序接收它

var http = require('http'); 
var fs = require('fs'); 
var url = require('url'); 
var MongoClient = require('mongodb').MongoClient; 
var assert = require('assert') 
var ObjectId = require('mongodb').ObjectID; 
var express = require('express'); 
var bodyParser = require('body-parser'); 
var app  = express(); 
var result1=[]; 
var result2=[]; 
var result3=[]; 
var result4=[]; 
var result5=[]; 
var result6=[]; 
var result7=[]; 
var i=0; 
var region; 
var os; 
app.use(bodyParser.urlencoded({ extended: true })); 

MongoClient.connect("mongodb://192.168.1.22:27017/test", function(err, db) { 

if(err) { return console.dir(err); } 
else { 
app.get('/',function(req, res) { 

var url_parts = url.parse(req.url, true); 
var url_parsed = url.parse(req.url, true); 

"i want data here from ajax to perform" 

console.log("connected"); 


var instance = db.collection('instance'); 
var region = db.collection('region'); 

region.findOne(({$and: [{"region_name": region_name},{"os_type": os}]}), function(err, result){ 
if(err){  
throw(err); 
} 
else{ 
console.log(region); 
var newr = result.inst_name; 

instance.find({ "inst_id": { "$in": newr } }).toArray(function(err, resultn){ 
if(err){ 
throw(err); 
} 
else{  
    var len=resultn.length; 

    console.log(resultn); 
    console.log(len); 

    for(var i=0;i<len;i++) 
    { 
     result1[i]=resultn[i].inst_type; 
     result2[i]=resultn[i].vcpu; 
     result3[i]=resultn[i].memory_gib; 
     result4[i]=resultn[i].storage; 
     result5[i]=resultn[i].phy_processor; 
     result6[i]=resultn[i].clock_spd; 
     result7[i]=resultn[i].netwk_pef;    
    } 
    var wstream = fs.createWriteStream('myOutput.txt'); 
    wstream.write(result1.toString()+"~"+result2.toString());  
    //var str = "Hi man" 
    res.writeHead(200, {'Content-Type':'text/html'}); 
    //res.end(url_parsed.query.callback+'("'+resultn.toString()+'")'); 
    res.end(url_parsed.query.callback+'("'+result1.toString()+"~"+result2.toString()+"~" 
    +result3.toString()+"~"+result4.toString()+"~"+result5.toString()+"~"+result6.toString() 
    +"~"+result7.toString()+'")');  
} 
}); 
} 
}); 
}).listen(process.env.PORT || 8083); 

}
});

我不明白如何接收node.js服務器程序中的數據,並且在接收到數據後,我想要處理該數據並將處理後的數據發送回相同的HTML頁面。

+0

這是您的實際代碼?您在服務器和客戶端代碼中都有一個語法錯誤,這會導致代碼無法運行。你說'我沒有使用express',但'app.use(bodyParser.urlencoded({extended:true}));'看起來像epress,所以你應該告訴你使用哪個框架而不是express。 –

+0

它是實際的代碼,但我已經粘貼了我的代碼的一部分,我想發送和接收來自HTML表單的數據。只是我想要一個解決方案如何獲取node.js服務器中的數據? – Rapid

+0

好的,但你在這裏有一個語法錯誤''(''+ result1.toString()'「);'所以你的服務器代碼不會運行。而且在客戶端的'myFunction'函數末尾有一個'}',所以這段代碼也不會運行。你仍然沒有告訴你使用什麼框架而不是表達。如果不是'express'應用程序,「app」是什麼? –

回答

1

如果您在server.js文件中有app.use(bodyParser.urlencoded({ extended: true }));然後用下面給出bodyParser你可以從阿賈克斯數據:

app.post('/', function(req, res) { //your ajax should also post to url: '/' 
    var region = req.body.region, 
    os = req.body.os; 
    // ... 
}); 
相關問題