Jquery ajax返回404未找到

我正在使用Ajax将表单数据和文件传递给PHP文件进行处理。

Javascript

$("form#applyform").submit(function(){ var data = new FormData(); jQuery.each($('#file')[0].files, function(i, file) { data.append('file-'+i, file); }); $.ajax({ url: 'ValidateApplication.php', data: data, cache: false, contentType: false, processData: false, type: 'POST', success: function(data){ alert(data); } }); } 

ValidateApplication.php肯定存在。 如果我在Web浏览器中输入地址,我可以查看它,但是当我提交表单时,Chrome控制台会返回404。

PHP与运行JavaScript的HTML页面位于同一个文件夹中,所以我很困惑为什么我会继续获得404。

UPDATE

将POST更改为GET可以消除404错误,但会返回500内部服务器错误

更新2

将表单的操作更改为=“ValidateApplication.php”并正常提交(没有AJAX)会导致正确的文件没有任何错误。

它似乎是FormData对象的问题。 一旦我改变我的方法使用.serialize() ,页面工作得很好。

 $("form#applyform").submit(function(){ var data = $("form#applyform").serialize(); jQuery.each($('#file')[0].files, function(i, file) { data.append('file-'+i, file); }); $.ajax({ url: 'ValidateApplication.php', data: data, cache: false, contentType: false, processData: false, type: 'POST', success: function(data){ alert(data); } }); } 

我有同样的问题,并在2小时后寻找导致404 Not Found错误的原因我发现我最近在PHP中使用header()并且忘记删除以下代码行:

 header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); 

删除后,我的Ajaxfunction再次恢复正常。

对我来说,我使用了一个name="name"的输入字段,这使得被调用的页面返回404.奇怪的是,希望这有助于某人。

尝试在文件名前添加/:url:’/ ValidateApplication.php’,

尝试将请求类型从POST更改为GET,看看它是否有效。

尝试注释掉部分代码:

 /*cache: false, contentType: false, processData: false,*/ 

尝试其他浏览器。