Javascript preventDefault()中断对外部PHP的AJAX请求

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请求的

我编写了一个AJAX请求,用于上传一个文件并将其详细信息添加到MySql数据库(通过表单)

代码工作得很好,但当我将preventDefault()添加到submit事件(不指向外部PHP文件)时,代码就中断了

同样的结构也适用于同一文件上的其他AJAX请求(例如用于编辑MySql数据库的AJAX请求)

我知道提交AJAX请求是因为在我的服务器上创建了一个新文件夹(作为PHP代码的一部分),但文件没有上传

我很乐意回答以下问题之一:

  • 什么preventDefault()doe会干扰AJAX请求的正常工作
  • 如何调试外部PHP代码?因为我没有被引导到它(因为preventDefault())

  • 如果我的问题不够清楚,请帮我说清楚。

    因为您正在调用
    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();