小编典典

如何查看以ajax形式上传的文件?

ajax

我正在尝试上传以表格形式发送的文件。我正在尝试使用php,但是在html和php之间我使用JS和Jquery和ajax(因为我不想重新加载页面)。我在$
_FILES方面遇到麻烦。

在这里,我正在使用带有javascript操作(action =“ javascript:SendPresupMail();”)的表单(包含文件输入)。

在该JS函数中,我使用了一个小Jquery和ajax,在其中,有一个对php函数的调用。

问题是,在该php函数中,$ _ FILES为空,我需要上传以表格形式发送的文件。

这是代码:

HTML表单,调用JS:

<form action="javascript: sendPresupMail();" method="post" id="formId" enctype="multipart/form-data">
<input type="text" id="mail" name="mail" />
<input type="file" id="file_selected" name="file_selected" />
<input type="submit" value="Submit" />

JS函数,并使用AJAX和JQUERY调用PHP:

function sendPresupMail() {
$.ajax({
    url: 'remote.php',
    type: 'post',
    data: {
    'w': 'sendPresupMail',
    'mail': document.getElementById('mail').value
    },
    success: function(data) {
        if(data != "ok" && data != ""){alert(data);}
        if(data == "ok"){alert("mail send.");}
    }
});

}

最后,PHP代码:

private function sendPresupMail(){
    $filename = ($_FILES['file_selected']['name']);
            ...
            ...
}

那里的代码无关紧要,问题在于$ filename没有收到任何东西,因为$
_FILES为空(我用var_dump对其进行了检查,并且为空)。因此我无法上传文件,该怎么办?

解决了

解决方法如下:实际上,这比我想象的要简单得多。首先,我创建一个iframe,因此现在所有表单,javascript,ajax等都在iframe中进行了处理。因此,页面似乎没有刷新,因为iframe正在这样做。无论如何,感谢大家的回答!


阅读 210

收藏
2020-07-26

共1个答案

小编典典

您不能使用纯Ajax / jQuery来做到这一点,但是可以与主要浏览器的所有最新版本都支持的JavaScript FormData对象结合使用。

可以在这里找到一个非常简单的jQuery示例:https :
//coderwall.com/p/p-n7eq

可以在以下位置找到更详细但纯净的JavaScript:https :
//developer.mozilla.org/zh-
CN/docs/Web/Guide/Using_FormData_Objects?redirectlocale=en-
US&redirectslug=Web%2FAPI%2FFormData%2FUsing_FormData_Objects

2020-07-26