【发布时间】:2022-01-22 12:17:43
【问题描述】:
以下示例不返回任何内容。如果我遗漏了什么,您能否澄清一下?
Javascript:
$('#add-modal').submit(function(e) {
e.preventDefault();
var formData = new FormData( document.getElementById("add-modal"));
$.ajax({
type: "POST",
url: "/add-form",
data: formData,
processData: false,
contentType: false,
success: function (data) { console.log("SUCCESS : ", data); },
error: function (e) {console.log("ERROR : ", e); }
});
});
HTML(提交表格):
<form id="add-modal" method="POST" enctype="multipart/form-data">
<div class="modal-body">
<div class="form-group">
<label>Name</label>
<input type="text" class="form-control" name="name" required>
</div>
<div class="form-group">
<label>Classes</label>
<select class="form-control" name="classes">
<option value="Direct">Direct</option>
<option value="Merketing">Merketing</option>
<option value="Partnets">Partnets</option>
</select>
</div>
<div class="form-group">
<label>File</label>
<input type="file" class="form-control" name="file">
</div>
</div>
<div class="modal-footer">
<input type="submit" class="btn btn-success" value="Add">
</div>
</form>
服务器端(节点js):
app.post('/add-form', function(req, res, next){
console.log(req.body);
});
在此致以最诚挚的问候, 叶凡
【问题讨论】:
-
你说的“什么都不返回”是什么意思?你的意思是“什么都不记录”?
-
当您使用 ajax 发送表单内容时,服务器的回复不会像您以“常规”方式发送表单时那样显示在浏览器中。唯一会发生的事情是 jQuery 将调用您作为
success传递的函数并传递回复。所以如果你检查你的控制台,你应该在那里看到服务器的输出。你为什么首先使用 $.ajax 来发送表单? -
@ChrisG 鉴于这看起来像一个模态,我想 OP 想通过 AJAX 提交表单然后关闭模态
-
@Phil 可能是真的,但不一定。我们将不得不等待澄清。 Evgeniy?
-
我明白了,你设置了哪个 express body parser 以及如何设置的?你也没有使用流行的multer,这让我觉得根本没有发生正文解析。
标签: javascript jquery ajax forms