我一直在尝试使用enctype ="multipart/form-data"提交表单.我有这个设置,因为一旦我找到了文本输入的ajax提交,表单将涉及jpeg/png上传.
使用表单html中的操作引用脚本时,php工作正常.
表单数据似乎由以下jquery正确检索,因为警报行显示:productName = Test + Name&productDescription = Test + Description&OtherProductDetails =
由jquery成功函数打印到我的HTML的返回数据是一个php错误说:Undefined index:productName
删除contentType:false可修复问题.
当我谷歌jquery/ajax multipart/form-data提交时,热门点击至少主要包括'contentType:false'.请有人向我解释原因吗?
http://digipiph.com/blog/submitting-multipartform-data-using-jquery-and-ajax http://hayageek.com/jquery-ajax-form-submit/ 使用jQuery.ajax发送multipart/formdata
jquery API文档说:contentType(默认值:'application/x-www-form-urlencoded; charset = UTF-8')类型:字符串将数据发送到服务器时,请使用此内容类型.
为什么我们需要为multipart/form-data提交将其设置为false?什么时候需要虚假设置?
jQuery的:
$("#addProductForm").submit(function (event) {
event.preventDefault();
//grab all form data
var formData = $(this).serialize();
$.ajax({
url: 'addProduct.php',
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (returndata) {
$("#productFormOutput").html(returndata);
alert(formData);
},
error: function () {
alert("error in ajax form submission");
}
});
return false;
});
Run Code Online (Sandbox Code Playgroud) 我有一个带有文件输入和一个按钮的表单,当我按下按钮时,文件应该转到服务器端。
当我向服务器发送文件时,ajax 响应成功,永远不要停在我使用的 c# webmethod 断点处。我做错了什么?
表单:(Default.aspx)
<form id="form1" runat="server" enctype="multipart/form-data">
<div align="center" class="divBody">
<div id="controlHost">
<div id="outerPanel">
<table width="100%" cellpadding="2" cellspacing="5">
<tr align="left">
<td colspan="2">
<span class="message">Seleccione el archivo que desea subir</span>
</td>
</tr>
<tr align="left">
<td valign="top">
<input type="file" id="FileInput" multiple="false" class="fileInput" />
</td>
<td align="right">
<input type="button" id="btnUpload" name="btnUpload" value="Upload" onclick="sendFile();" class="button" />
</td>
</tr>
</table>
</div>
</div>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
脚本:(默认.aspx)
function sendFile() {
var data = new FormData();
var file = $("#FileInput")[0].files[0];
data.append("name", file.name);
data.append("size", file.size); …Run Code Online (Sandbox Code Playgroud)