Javascript preventDefault()中断对外部PHP的AJAX请求
我编写了一个AJAX请求,用于上传一个文件并将其详细信息添加到MySql数据库(通过表单) 代码工作得很好,但当我将preventDefault()添加到submit事件(不指向外部PHP文件)时,代码就中断了 同样的结构也适用于同一文件上的其他AJAX请求(例如用于编辑MySql数据库的AJAX请求) 我知道提交AJAX请求是因为在我的服务器上创建了一个新文件夹(作为PHP代码的一部分),但文件没有上传 我很乐意回答以下问题之一:Javascript preventDefault()中断对外部PHP的AJAX请求,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,我编写了一个AJAX请求,用于上传一个文件并将其详细信息添加到MySql数据库(通过表单) 代码工作得很好,但当我将preventDefault()添加到submit事件(不指向外部PHP文件)时,代码就中断了 同样的结构也适用于同一文件上的其他AJAX请求(例如用于编辑MySql数据库的AJAX请求) 我知道提交AJAX请求是因为在我的服务器上创建了一个新文件夹(作为PHP代码的一部分),但文件没有上传 我很乐意回答以下问题之一: 什么preventDefault()doe会干扰AJAX请求的
如果我的问题不够清楚,请帮我说清楚。因为您正在调用
event.preventDefault()
我假设您正在使用ajax发送表单数据
如果要使用ajax上传文件,需要在ajax请求中设置processData:false
和contentType:false
看。所以我想我得到了答案 我正在使用此方法:,它显然不适用于preventDefault: 我将尝试切换到Ozan建议的方法:
希望我没弄错。你想用ajax上传文件吗
event.preventDefault()
将阻止表单提交,因此我猜您正在使用ajax发送表单数据。我们需要查看更多代码。如果preventDefault()
假定正在停止ajax请求,您应该如何查看它们?能否将表单的目标设置为隐藏iframe的名称?我相信这就是有多少其他网站已经完成了异步文件上传(例如gmail)@Aelliott1485,这是可行的,但这是一个古老的方法,不再是首选。使用ajax上传文件要干净得多。因此我使用以下方法:。这意味着我在服务器端使用$\u FILES变量来检索文件,而不是在客户端使用.FILES方法。它有效吗?它在没有preventDefault()的情况下工作,我可以调整它以使用它吗?客户端文件和服务器端$\文件是两个完全不同的东西。如果您在Ajax端正确上传文件,您将能够像在普通表单提交中一样从服务器端访问它们。
$("#upload-form").submit(function(event){
// TODO: check why breaks PHP code
// event.preventDefault();