大佬教程收集整理的这篇文章主要介绍了Jquery/Ajax表单提交(enctype =“multipart/form-data”) 为什么“contentType:False”在PHP中引起未定义的索引?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
>使用html格式的动作引用脚本时,PHP工作正常。
>表单数据似乎被下面的jquery正确地检索,因为警报行显示:productName = Test Name& productDescription = Test Description& OtherProductDetails =
>由jquery成功函数打印到我的HTML的返回数据是一个PHP错误,说:Undefined index:productName
> remove contentType:false修复问题。
当我google 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/
Sending multipart/formdata with jQuery.ajax
jquery api文档说:
contentType(默认值:’application / x-www-form-urlencoded; charset = UTF-8′)
类型:字符串
将数据发送到服务器时,请使用此内容类型。
为什么我们需要将其设置为虚假的多部分/表单数据提交?
什么时候需要虚假设定?
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选项设置为false时,会强制jQuery不要添加Content-Type头,否则边界字符串将会丢失。另外,当通过多部分/表单提交文件时,必须将processData标志设置为false,否则,jQuery将尝试将FormData转换为字符串,否则将失败。
尝试解决您的问题:
您正在使用jQuery的.serialize()方法,它以标准的URL编码符号创建一个文本字符串。
使用“contentType:false”时,需要传递未编码的数据。
尝试使用“new FormData”而不是.serialize():
var formData = new FormData($(this)[0]);
看看你的formData如何通过使用COnsole.log()传递到PHP页面的区别。
var formData = new FormData($(this)[0]); console.log(formData); var formDataserialized = $(this).serialize(); console.log(formDataserialized);
以上是大佬教程为你收集整理的Jquery/Ajax表单提交(enctype =“multipart/form-data”) 为什么“contentType:False”在PHP中引起未定义的索引?全部内容,希望文章能够帮你解决Jquery/Ajax表单提交(enctype =“multipart/form-data”) 为什么“contentType:False”在PHP中引起未定义的索引?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。