【发布时间】:2014-01-14 17:39:58
【问题描述】:
我一直在尝试使用 enctype="multipart/form-data" 提交表单。我有这个设置是因为一旦我弄清楚了文本输入的 ajax 提交,表单将涉及 jpeg/png 上传。
使用 html 表单中的操作引用脚本时,php 工作正常。
以下 jquery 似乎正确检索了表单数据,因为警报行显示:productName=Test+Name&productDescription=Test+Description&OtherProductDetails=
jquery成功函数打印到我的HTML的返回数据是一个php错误提示:未定义索引:productName
删除 contentType:false 可解决问题。
当我使用 google jquery/ajax multipart/form-data 提交时,top hit 至少主要包括 'contentType:false'。请问有人可以向我解释原因吗?
http://digipiph.com/blog/submitting-multipartform-data-using-jquery-and-ajax http://hayageek.com/jquery-ajax-form-submit/ Sending multipart/formdata with jQuery.ajax
jquery API 文档说: contentType(默认值:'application/x-www-form-urlencoded; charset=UTF-8') 类型:字符串 向服务器发送数据时,使用此内容类型。
为什么我们需要将它设置为 false 来提交多部分/表单数据? 什么时候需要 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;
});
【问题讨论】:
-
你能在这里给我看看你的表单代码吗?
-
可能是您的表单操作属性仍设置为“addProduct.php”,这就是 jquery 不影响表单操作的原因。
-
它最初设置为空。我按照下面的答案更改了它,但没有用。
-
请检查我更新的答案表单数据通过 serialize() 方法发送。