php - 使用 jquery / ajax / php 提交文件
问题描述
我的 ajax 文件提交有问题。似乎没有任何东西(变量和文件)提交给接收的 php 文件。
这是我的表格:
<form id="ProtocolForm" enctype="multipart/form-data" method="post">
<input name="ProtocolName" type="hidden" value="sdfsdf">
<input name="ProtocolType" type="hidden" value="Image">
<input name="name_major" id="name_major" type="text">
<input name="name_minor" id="name_minor" type="text">
<input name="creator" id="creator" type="text">
<input name="File" class="File" id="File" type="file">
<input id="Submit" type="submit" value="Save Protocol">
</form>
这是我的 js 代码:
$(document).on( "submit", "#ProtocolForm", function( event ) {
event.preventDefault();
var form = $('form')[0];
var formData = new FormData(form)
$.ajax({
url: "_save_protocol.php",
type: "POST",
data: formData,
contentType: false,
cache: false,
processData:false,
beforeSend : function()
{
alert('before send:' + $('form').serialize());
},
success: function(data)
{
if(data=='invalid')
{
alert('Invalid file');
}
else
{
alert('Response:' + data);
}
},
error: function(e)
{
alert('Error '+ e);
}
});
});
提交表单后,我可以看到在 beforeSend 函数中序列化的所有变量。但是,当我尝试访问 php 文件中的变量时,它们都是空白的。$_POST 和 $_FILES 一样是空白的。我错过了什么?任何帮助将不胜感激。谢谢!
解决方案
解决了问题;问题不在于 ajax,而在于服务器端。php.ini max_post_size 未正确设置,因此服务器未正确处理发布请求。它已经修复并且现在可以工作了。
阅读本网站上有关该主题的其他一些问题让我认为这是一个相当普遍的问题 - 特别是对于像我这样使用共享托管服务的人。希望这对其他人有帮助。
推荐阅读
- flutter - 如何正确提取/合成自定义小部件并处理其子字段
- javascript - 使 webpack 在包中包含一个全局 jquery 插件
- python - tkinter 将复选框收集到列表中
- javascript - Javasript 通过带有变量的 src 设置图像的问题
- python - 使用 python 减慢语音音频(不是来自 mp3/wav)
- sharepoint - 阻止用户将网站保存为收藏夹
- marklogic - MLCP 权限
- reactjs - 在 Next js 应用程序中进行延迟加载的最佳方法是什么?
- javascript - JavaScript:代码说“无法读取未定义的属性'indexOf'”但我无法解决问题
- cucumber - 错误 org.picocontainer.PicoCompositionException:不允许重复键。复制