[英]Sending an array in POST body
我正在嘗試通過AJAX POST請求將數組發送到我的Node / MongoDB服務器。 主體還包含其他變量。 這是客戶端JS代碼:
function setupForm(){
$("#add").submit(function(event) {
event.preventDefault();
var name = $("#name").val();
var logo = $("#logo").val();
var phone = $("#phone").val();
var email = $("#email").val();
var address = $("#address").val();
var postcode = $("#postcode").val();
var openingHours = $("#openingHours").val();
var loc = [44, 44];
$.ajax({
type: "POST",
url: "http://localhost:3000/services",
data: "name=" + name + "&logo=" + logo + "&phone=" + phone + "&email=" + email + "&address=" + address + "&postcode="+ postcode +"&openingHours=" + openingHours + "&loc=" + loc,
success: function(){alert('success');}
});
});
}
這是服務器端代碼:
exports.addWine = function(req, res) {
var wine = req.body;
console.log('Adding wine: ' + JSON.stringify(wine));
db.collection('services', function(err, collection) {
collection.insert(wine, {safe:true}, function(err, result) {
if (err) {
res.send({'error':'An error has occurred'});
} else {
console.log('Success: ' + JSON.stringify(result[0]));
res.send(result[0]);
}
});
});
}
它將以這種格式添加到數據庫中。 我想要一個數組:
"postcode" : "ugh",
"openingHours" : "fhgfh",
"loc" : "44,44"
如前所述,使用serializeArray() 。 要添加額外的參數,只需將其附加到數組,如下所示。
function setupForm(){
$("#add").submit(function(event) {
event.preventDefault();
var data = $(this).serializeArray();
// add extra parameters (don't forget brackets)
data.push({ name: 'loc[]', value: 44 });
data.push({ name: 'loc[]', value: 44 });
$.ajax({
type: "POST",
url: "http://localhost:3000/services",
data: data,
success: function() {
alert('success');
}
});
});
}
如果要繼續使用僅構建查詢字符串的方法,則必須添加&loc[]=44&loc[]=44
但從長遠來看,最好只使用序列化函數之一。
看一下jQuery的.serialize()和.serializeArray() 。 他們應該能夠滿足您的需求。
給定您正在使用的數據,我建議在POST請求的正文中發送數據。 多虧了JSON,這將保留數據類型(數組,布爾值等)。
$.post("http://localhost:3000/services", {
name: $("#name").val(),
loc: [44, 44]
...etc
}, function(){alert('success');}
);
后端應該可以正常工作,無需進行任何更改。 您可能需要將正文解析器添加到中間件堆棧。 主體解析器中間件會將主體轉換為javascript對象,您可以將其直接推送到數據庫中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.