我有一個有3個文本輸入字段和1個文件輸入字段的表單。當我使用下面的腳本把數據上傳到服務器:爲什麼我的表單數據被分成2個發佈請求?
$("#submit_button").click(function(event){
var product_name = $("#product_name").val(),
product_price = $("#product_price").val(),
product_description = $("#product_description").val(),
product_image = $("#product_image").val();
if (product_name && product_price) {
$.post(
'/product/create',
{ product_name: product_name,
product_price: product_price,
product_description: product_description,
product_image: product_image
}
).fail(function(res){
alert("Error: " + res.getResponseHeader("error"));
});
} else {
if (! $("#form_err").length)
{
showErrorAlert("Please fill product name and price.");
}
return false;
}
});
,並具有下列服務器JS腳本:
create: function(req, res) {
var product_name = req.param("product_name"),
product_price = req.param("product_price"),
product_description = req.param("product_description"),
product_image = req.param("product_image");
console.log("product_name: " + product_name);
console.log("product_price: " + product_price);
console.log("product_description: " + product_description);
console.log("product_image: " + product_image);
if (req.method.toLowerCase() == 'post') {
if(req.files) console.log(util.inspect(req.files));
if(req.file) console.log(util.inspect(req.file));
if(req.body) console.log(util.inspect(req.body));
return res.view({
layout: "layout",
product_name: product_name});
}
}
我的表單數據被分成2個POST請求如在日誌中(第一個帶有文本字段數據,第二個帶有文件輸入數據):
product_name: 9iiouiouoiu
product_price: 9.00
product_description: lijlijij
product_image: undefined
{ product_name: '9iiouiouoiu',
product_price: '9.00',
product_description: 'lijlijij' }
product_name: undefined
product_price: undefined
product_description: undefined
product_image: czarne_lampki.jpg
{ product_image: 'dots.jpg' }
爲什麼會發生這種情況?
EDIT
加入 event.preventDefault後();
我得到以下 - 不進行重新定向到所需的頁面product/create
product_name: pro
product_price: 88.00
product_description: wsad
product_image: undefined
body
{ product_name: 'pro',
product_price: '88.00',
product_description: 'wsad' }
我試過了。請檢查我的編輯。 – Patryk
您應該使用validat/submit處理表單,而不是點擊/發佈 – mika