我使用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.
更新
将POST更改为GET可以消除404错误,但会返回500内部服务器错误
更新2
将表单的操作更改为=" ValidateApplication.php"并且正常提交(没有AJAX)会导致正确的文件没有任何错误。
答案 0 :(得分:3)
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);
}
});
}
答案 1 :(得分:3)
我遇到了同样的问题,2小时后查找导致404 Not Found错误的原因我发现我最近在PHP中使用header()
并且忘记删除以下代码行:
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
删除后,我的Ajax功能再次恢复正常。
答案 2 :(得分:2)
对我而言,我使用了name="name"
的输入字段,使得被调用的页面返回404.奇怪的是,希望这可以帮助某人。
答案 3 :(得分:0)
尝试在文件名前添加/: url:' /ValidateApplication.php',
尝试将请求类型从POST更改为GET,看看它是否有效。
尝试评论部分代码:
/*cache: false,
contentType: false,
processData: false,*/
尝试其他浏览器。
答案 4 :(得分:0)
请验证您是否在表格中正确提供了name =“”属性 表单提交验证输入名称属性中的所有bean属性
答案 5 :(得分:0)
请检查您的PHP页面名称!
请勿使用page-ajax.php
,而应使用page_ajax.php
。