我一直在尝试使用enctype =“ multipart / form-
data”提交表单。我有此设置,因为一旦我确定了用于文本输入的Ajax提交,表单将涉及jpeg / png上传。
当使用html形式的动作引用脚本时,php可以正常工作。
下方的jquery似乎正确检索了表单数据,因为警报行显示:productName = Test + Name&productDescription = Test + Description&OtherProductDetails =
通过jquery成功函数打印到我的HTML的返回数据是php错误,内容为:未定义索引: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’)类型:String将数据发送到服务器时,请使用此内容类型。
为什么要提交多部分/表单数据,我们需要将其设置为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;
});
contentType
option选项false
用于multipart/form-data
传递文件的表单。
当将contentType
选项设置为时false
,它将强制jQuery不添加Content-
Type标头,否则,边界字符串将丢失。另外,通过multipart / form-
data提交文件时,必须将processData
标志设置为false,否则jQuery将尝试将FormData转换为字符串,这将失败。
要尝试解决您的问题,请执行以下操作:
使用jQuery的.serialize()
方法以标准的URL编码表示法创建文本字符串。
使用时,您需要传递未编码的数据contentType: false
。
尝试使用new FormData
代替.serialize():
var formData = new FormData($(this)[0]);
亲自了解使用,将formData传递到php页面的区别console.log()
。
var formData = new FormData($(this)[0]);
console.log(formData);
var formDataSerialized = $(this).serialize();
console.log(formDataSerialized);
问题内容: HTML表单是什么意思,什么时候应该使用它? 问题答案: 发出POST请求时,必须以某种方式对构成请求主体的数据进行编码。 HTML表单提供了三种编码方法。 (默认) 正在进行添加的工作,但已被放弃。 (使用HTML表单提交以外的其他方式生成的HTTP请求也可以使用其他编码。JSON是用于Web服务的常见格式,有些仍然使用SOAP。) 格式的细节对大多数开发人员而言并不重要。要点是:
问题内容: 我有一个简单的函数,它仅将翻译后的消息从服务器返回到客户端。但是,当我将结果传递给var时,结果显示为未定义。 结果- >未定义(错误) 当我查看标题时,它会给我: 为什么我仍然得到不确定的结果? 问题答案: 您可以将回调函数传递给该函数 然后调用:
问题内容: 我创建了一个隐藏的表单元素 而且我正在尝试在servlet中通过此行获取值(如我之前所做的那样): 但是我明白了(第33行是上面的行): java.lang.NumberFormatException:null java.lang.Integer.parseInt(未知源)java.lang.Integer.parseInt(未知源)web.objects.UploadImage.do
Jquery Mobile会自动通过ajax处理表单的提交,并在表单页面和结果页面之间创建一个平滑的转场效果。注意请在form元素上正确设定action 和method属性,保证表单的提交。如果没有指定,提交方法默认为get,action默认为当前页的相对路径(通过$.mobile.path.get()方法取得 表单也可以像链接一样指定转场效果的属性,比如data-transition="pop"
描述 (Description) Framework7允许您使用以下两种方式使用Ajax自动发送数据 - 当用户提交表单或submit事件时,以编程方式触发表单。 当用户修改任何表单字段或以编程方式change表单上触发的事件时。 发送提交表单数据 要自动启用Ajax表单并单击“提交”发送表单数据,您需要将ajax-submit类添加到表单中。 用户提交表单后,Ajax将使用以下规则自动发送表单数
我不知道为什么不能让jQuery传递上传数据,因为AJAX对象似乎配置正确,并且发送了正确的content-type/mime-type头部。 我尝试了两种不同的请求形式--一种是将FormData对象包含在文本中,另一种是直接传递FormData对象。 不幸的是,不管怎样,我都无法传递任何内容,$_files和$_post都是空数组。