【问题标题】:Submitting file with jquery / ajax / php使用 jquery / ajax / php 提交文件
【发布时间】: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


【解决方案1】:

解决了问题;问题不在于 ajax,而在于服务器端。 php.ini max_post_size 未正确设置,因此服务器未正确处理发布请求。它已经修复并且现在可以工作了。

阅读本网站上有关该主题的其他一些问题让我认为这是一个相当普遍的问题 - 特别是对于像我这样使用共享托管服务的人。希望这对其他人有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 2012-04-04
    • 2016-01-24
    • 2015-10-08
    • 2012-07-05
    • 2014-04-14
    相关资源
    最近更新 更多