У меня простая форма, я просто хочу посмотреть, какие поля отправляются на сервер. Но на стороне сервера я получаю значение поля <input type="text">
. Почему сервер не может получить значение <select>
и <input type="file"/>
?
HTML:
<form action="http://localhost:8100/" method="POST">
<div>
<select>
<option value="op1" selected="selected">Option1</option>
<option value="op2">Option2</option>
</select>
</div>
<div>
<input type="file" value="select a file"/>
</div>
<div>
<label>Your Hero: </label><input type="text" name="hero" />
</div>
<input type="submit" value="submit" />
</form>
Сервер:
var http = require("http");
http.createServer(function(req, res) {
if (req.method == 'POST') {
var body = '';
req.on('data', function (data) {
body += data;
console.log(body);
});
req.on('end', function () {
console.log("request data complete");
});
res.end("post request");
} else {
res.end("get request");
}
}).listen(8100);
Ваш select
и file input
элементов отсутствует name
атрибута. Все элементы формы, которые вы хотите отправить, должны иметь уникальный атрибут name
. атрибут name
будет идентификатором для значения элемента, когда данные были отправлены через POST и GET.
Вы можете прочитать об этом в спецификациях здесь: http://www.w3.org/TR/html5/forms.html#naming-form-controls:-the-name-attribute
Я думаю, вы просто забыли атрибуты "name" в этой форме. Добавьте его, и он должен работать. ура