Jquery 如何从多个附件创建JSON
我有一个表单,用户可以使用此代码添加一个或多个附件Jquery 如何从多个附件创建JSON,jquery,json,asp.net-mvc,Jquery,Json,Asp.net Mvc,我有一个表单,用户可以使用此代码添加一个或多个附件 <div id="attachments"> </div> <a href="#" id="addAttachment">Add attachment</a> <script> $("#addAttachment").click(function () { var strChooseFile = "<table><tr><td><in
<div id="attachments">
</div>
<a href="#" id="addAttachment">Add attachment</a>
<script>
$("#addAttachment").click(function () {
var strChooseFile = "<table><tr><td><input type='file' name='PostedFiles' size='30' title='Choose file ...'></td>";
strChooseFile += "<td><input type='text' name='FileDescriptions' size='50' title='File descriptions ...'></td>";
strChooseFile += "<td><input type='button' name='btnAttachmentRemove' id='btnRemoveAttachment' value='Remove' ></td></tr></table>";
inputFile = $(strChooseFile);
inputFile.clone(true).appendTo("#attachments");
});
</script>
正如您在上面的代码中看到的,我在准备PostedFiles
和FileDescriptions
时遇到了一个问题。发送到控制器后,值为空
如何从
$(“input[name=PostedFiles]”)数组中准备PostedFiles
,以及FileDescriptions
?您能给我们一个输入值的示例吗?以及您希望如何对它们进行“分析”以提交到服务器。另外,javascript中的标记让我头疼。可能值得将所有这些都放到JSFIDLE中,以便我们可以帮助您重新构造它。输入[name=PostedFiles]是输入文件吗?输入[name=FileDescriptions]input?首先m_data.append(“PostedFiles”,“$”([input[name=PostedFiles]))).val()代码>(和下一行)不起作用。将表单(包括文件)序列化将是最简单的方法!-推断是的,PostedFiles是一个
,而FileDescriptions是
,正如您在脚本中看到的那样。它是动态的,可以超过1谢谢你@StephenMuecke,它有效,你有多聪明:)你能把它作为一个答案添加吗。顺便说一句,我使用$(“#frmInvoice”).serialize(),
对表单进行了序列化,但它不起作用。你能在回答中解释一下吗?
$("#btnAddInvoice").click(function (e) {
if ($("#frmInvoice").validate().form()) {
var m_data = new FormData();
m_data.append("SubsidiaryClientID", $("#SubsidiaryClientID").val());
m_data.append("SubsidiaryClientNo", $("#SubsidiaryClientNo").val());
m_data.append("SubsidiaryClientName", $("#SubsidiaryClientName").val());
m_data.append("PostedFiles", $("input[name=PostedFiles]").val()); // how to parse this to json?
m_data.append("FileDescriptions", $("input[name=FileDescriptions]").val()); // how to parse this to json?
$.ajax({
type: "POST",
url: "@Url.Content("~/Invoice/AddInvoice")",
data: m_data,
contentType: false,
processData: false,
dataType: "json",
cache: false
}).done(function (data) {
alert(data);
if (!data.message) {
$("#invoiceList").html(data);
$("#addInvoiceModal").modal("hide");
}
});
}
});