繁体   English   中英

Ajax表单发布不发布带有文件的输入类型

[英]Ajax form post not posting input type with file

“我的表单很简单,并用ajax发布,但是我无法在php脚本中获取$ _FILES”

<form id="submitForm" method="post" enctype="multipart/form-data" >
     <input type="file" name="file"  />
     <input type="text" name="name" />
    </form>

下面是ajax代码,告诉我我在哪里弄错了

$.ajax({
                url: '<?php echo base_url(); ?>getter/addItemRow',
                type:"POST",
                data:$('#submitForm').serialize(),
                context: $('#table')
                }).done(function(data) {
                  this.prepend(data);
                });

下面是php代码行

print_r(var_dump($_FILES));

这将返回空数组;

您不能使用AJAX / JavaScript来传输文件!

只是JavaScript的 AJAX无法访问存储在文件系统中的文件并将其传输到服务器。 您可以使用隐藏的iframe来执行此操作。 有一个不错的jquery表单插件 ,它使您可以使表单看起来像AJAX,它还支持文件上传

该插件使用的代码非常简单:

$(function() {
    $('#formid').bind("submit", function(){
        $(this).ajaxForm(function(result) {
            alert('the form was successfully posted!');
        });
    });
});

无法通过ajax上传文件。 您可以使用IFrame上传文件,而无需刷新页面。 您可以在此处查看更多详细信息:

http://www.ajaxf1.com/tutorial/ajax-file-upload-tutorial.html

使用XHR2,支持通过AJAX上传文件。 例如通过FormData对象,但是不幸的是,所有/旧的浏览器都不支持它。

<script src="http://malsup.github.com/jquery.form.js"></script> 


$(function() { 
    $('#submitForm').ajaxForm(function(result) {
                    $("#HiddenRowsa").hide();
                    $('#table').prepend(result);
                }).submit();
         });

我得到的所有答案都是正确的 ,这将起作用的简单jquery代码,此处提供的所有链接都丢失了。ajaxForm中的.submit()函数,所以所有正在寻找的其他人对于这种问题,首先在头中包含以上文件,然后编写以上代码

jQuery不能仅使用AJAX处理PHP文件,因为$ _FILES是一个全局PHP变量,与JavaScript完全无关。 您可以使用这样的插件: jQuery File Upload ,或更多。 只需在Google上搜索和查找即可

您也可以为此使用iFrame,但是我不建议您这样做,因为在IE中,它会给您带来讨厌的点击,就像页面已更改一样。

这是一个替代解决方案,如果您想立即上传文件,请使用ajaxForm进行上传,在以下链接中您会发现ajaxForm没有调用Back

这是ajaxForm的链接,以了解有关该方法的更多信息:: http://jquery.malsup.com/form/#ajaxForm

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM