以html、javascript和php上传和处理用户选择的文件

以html、javascript和php上传和处理用户选择的文件,php,javascript,html,forms,Php,Javascript,Html,Forms,我想让用户选择一个文件,然后让php将内容放在db中。现在,最后一部分(用php处理文件)很简单。但是有没有一种方法可以在不加载新页面的情况下处理用户选择的文件 如果我使用以下选项: <FORM ACTION="upload.php" METHOD="post" ENCTYPE="multipart/form-data"> <INPUT TYPE="file" NAME="somefile"><BR /> <INPUT TYPE="submit" NAM

我想让用户选择一个文件,然后让php将内容放在db中。现在,最后一部分(用php处理文件)很简单。但是有没有一种方法可以在不加载新页面的情况下处理用户选择的文件

如果我使用以下选项:

<FORM ACTION="upload.php" METHOD="post" ENCTYPE="multipart/form-data">
<INPUT TYPE="file" NAME="somefile"><BR />
<INPUT TYPE="submit" NAME="submit" VALUE="Upload">
</FORM>


Page upload.php自动加载,然后我可以将上载的文件插入数据库

我想使用javascript、php和xajax的组合来处理该文件。我认为这样的事情是不可能的:

<FORM ACTION="javascript:xajax_proces_file()" METHOD="post" ENCTYPE="multipart/form-data">
<INPUT TYPE="file" NAME="somefile"><BR />
<INPUT TYPE="submit" NAME="submit" VALUE="Upload">
</FORM>


因为调用函数xajax_process_file()时不会上载文件。还是这样?我认为我没有完全掌握使用javascript、html和php上传的原理


非常感谢任何帮助和/或澄清。

另一种方法是使表单将操作定向到iframe,在iframe中处理查询后,通过JS清除父表单。

将此过程视为两个步骤可能会有所帮助

首先,用户填写表单并提交表单-第一步

其次(这是默认操作),指定的目标文件从表单获取输入并使用它执行任何操作。您几乎可以将表单“操作”视为链接—链接单击的默认操作是显示链接的结果。表单操作也是如此-显示表单操作的结果

现在,可以通过JavaScript为特定事件禁用元素的默认操作。还可以通过JavaScript访问浏览器HTTP机制来发送/接收HTTP请求(这是每个页面请求的内容——无论是从URL栏、页面链接还是谷歌搜索结果)

这就是简单的AJAX——使用JavaScript使用浏览器HTTP机制向web服务器发送请求,并可能在不使用传统单击事件的情况下接收响应。然后结合使用JavaScript“关闭”默认操作,而是按照您指定的操作从服务器获取信息并将其添加到页面,而无需刷新页面

很多时候,为了防止对某个元素执行解除操作,您在代码中返回false。你的表格也是如此。使用javascript:

form.onSubmit = function() {
  blah blah blah.....Use ajax to send the information to the form handler
  return false; //Prevents the defualt action of the submit event
}
如果你真的是AJAX新手,我建议你先看看这个,然后看看这个。最后,我建议使用像jQuery这样的Javascript框架来帮助您——它非常棒,做了很多很棒的事情,但也有简单的AJAX内置功能


下面是另一个不用刷新页面即可提交表单的方法(使用jquery)。

谢谢您的回答。我确实理解Ajax的原理,并且已经使用了xajax和jquery。然而,我不理解上传与ajax结合的原理。我希望上一篇教程使用上传表单,但不知道如何使用,也不知道是否可以使用。有人建议吗?我现在明白了:不可能有真正的ajax上传。我现在使用的是来自的ValumsAjax上传