Reputation: 180
I'm using Ajax to pass my form data and files to a PHP file for processing.
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
definitely exists. I can view it if I type in the address into the web browser, however when I submit the form chrome console returns 404.
The PHP is in the same folder as the HTML page the JavaScript is running on so I am confused as to why I keep getting a 404.
UPDATE
Changing POST to GET gets rid of the 404 error, but returns a 500 Internal Server Error
UPDATE 2
Changing the action of the form to ="ValidateApplication.php" and submitting it as normal (without AJAX) leads to the correct file without any errors.
Upvotes: 8
Views: 93707
Reputation: 597
I had the same problem. Most probably you have renamed the file ValidateApplication.php or forgotten to rename.
Upvotes: 0
Reputation: 342
Please check your PHP page name!
Do not use page-ajax.php
, but instead use page_ajax.php
.
Upvotes: 0
Reputation: 2692
Please validate you have provided name="" attribute properly in the form Form submit validate all bean attribute from name attribute of the input
Upvotes: 0
Reputation: 51
For me, it was that I used an input field with name="name"
which made the called page return a 404. Weird stuff, hope this helps someone.
Upvotes: 3
Reputation: 180
It seemed to be a problem with the FormData
object. Once I changed my method to use .serialize()
instead, the page worked just fine.
$("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);
}
});
}
Upvotes: 4
Reputation: 4879
I've had the same issue and after 2 hours looking for what was causing the 404 Not Found error I found that I was recently playing with the header()
from PHP and had forgotten to delete the following line of code:
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
After deleting it, my Ajax functions became normal again.
Upvotes: 4
Reputation: 434
Try adding a / before the filename: url: '/ValidateApplication.php',
Try changing the request type from POST to GET and see if it works.
Try commenting out parts of the code:
/*cache: false,
contentType: false,
processData: false,*/
Try another browser.
Upvotes: 0