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,*/
尝试其他浏览器。