【发布时间】:2019-07-31 14:00:34
【问题描述】:
我在提交 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 一样是空白的。我错过了什么?任何帮助将不胜感激。谢谢!
【问题讨论】:
-
表单真的提交了吗?检查您的控制台 - 您的请求是否收到 404/500 错误?
-
据我所知,表单已提交,我可以在响应中看到接收 php 文件的输出。
-
然后在你的 php 中执行
var_dump( $_REQUEST )来查看帖子数据是否真的被正确发送了 -
这是页面上唯一的表单吗?
$('form')[0]将选择页面上的第一个表单,不一定是这个。请改用var form = this。 -
在你的ajax调用中,传递
$('form').serialize())而不是formData
标签: php jquery ajax jquery-ui forms http-post