Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用输入类型文件提交Ajax表单_Javascript_Jquery_Ajax_File Upload_Upload - Fatal编程技术网

Javascript 使用输入类型文件提交Ajax表单

Javascript 使用输入类型文件提交Ajax表单,javascript,jquery,ajax,file-upload,upload,Javascript,Jquery,Ajax,File Upload,Upload,我正在使用ajax提交一个表单,该表单可以浏览、上传并使用PHP处理文件。我讨厌标准的html输入类型=“文件”按钮(和大多数人一样),所以我使用了一个技巧,从另一个按钮(id=“fileSelect”)中单击标准的“浏览”按钮,我最终可以自定义该按钮。在safari和其他应用程序中效果很好,但在IE中提交表单的ajax代码行不会触发。ajax代码的其他元素也会被执行(最后我得到了警报(“ajax complete”);但是“$(“#imageform”).ajaxForm({target:'#

我正在使用ajax提交一个表单,该表单可以浏览、上传并使用PHP处理文件。我讨厌标准的html输入类型=“文件”按钮(和大多数人一样),所以我使用了一个技巧,从另一个按钮(id=“fileSelect”)中单击标准的“浏览”按钮,我最终可以自定义该按钮。在safari和其他应用程序中效果很好,但在IE中提交表单的ajax代码行不会触发。ajax代码的其他元素也会被执行(最后我得到了警报(“ajax complete”);但是“$(“#imageform”).ajaxForm({target:'#preview'}).submit();”行在IE中不起作用

Ajax代码:

$(document).ready(function() 
{       
    $('#xfile').live('change', function()   // when there is an even on the 'file' element (like file selected)
    { 
        $("#preview").html('');  // clears the preview area
        $("#preview").html('<img src="general_images/loading.gif" alt="Uploading...."/>');  // displays the loading
        $("#imageform").ajaxForm({target: '#preview'}).submit();
        alert ("Ajax complete");
    });
}); 
$(文档).ready(函数()
{       
$('#xfile').live('change',function()//当'file'元素上存在偶数时(如所选文件)
{ 
$(“#预览”).html(“”);//清除预览区域
$(“#预览”).html(“”);//显示加载
$(“#imageform”).ajaxForm({target:'#preview'}).submit();
警报(“Ajax完成”);
});
}); 
和HTML代码:

<div>
<button id="fileSelect" onclick="document.getElementById('xfile').click();">Insert Picture</button>
<form style="display: inline" id="imageform" name="imageform" action="upload_file_journal.php" method="post" target="_blank" enctype="multipart/form-data">
    <input style="visibility: hidden" type='file' name='xfile' id='xfile' /
</form>

插入图片

这在IE9及以上版本中不起作用(我认为它在IE10,11中起作用)

唯一的实际选择是使用绝对位置将上载控件放置在按钮顶部,然后将不透明度设置为0.1,然后它们看起来像是在单击按钮,但实际上是在单击输入,您必须对文件输入进行超级调整,以确保它们始终单击按钮部分

即使这样做也很麻烦。
希望这能有所帮助

因此,如果javascript是由本机输入type=“file”按钮触发的,那么javascript可以正常工作,但如果按钮是由fileSelect按钮触发的,则不能正常工作。我用IE10试过了,但没用。我很好奇为什么它不会在jquery代码中触发submit。也许这只是一个很深的IE实现问题,我不应该真正关心。。。只要强迫IE用户使用本机按钮。是的,从我所读到的来看,这是为了安全。根据我自己的经验,您可以使用jquery和一个辅助按钮打开文件输入,但输入将无法按预期工作。数据永远不会进入服务器,看看这篇文章,它似乎显示了我所描述的修复,