JQuery Ajax is sending GET instead of POST
Some problem on MVC. For some reason when I remove the [HttPost] it works as expected, even though I am telling ajax to use POST .
- It turns out you need to use
type: "POST"
- Even though the example on jQuery page says to use
method : "POST"
Now it POST's
But after digging in the documentation I found this.
I had this issue and per @FAngle's suggestion it was because my .htaccess was removing trailing slashes — and I had set the url to /ajax/foo/bar/
and not/ajax/foo/bar
. The redirect changes the request from POST to GET. Remove the / and problem solved!
The URL './api/add'
actually got redirected to './api/add/index.php'
. therefore this bizarre side-affect which the new request after the redirect sent using GET
instead of POST
Solution
- use the full url
'./api/add/index.php'
- or add a slash
'./api/add/'
.
I noticed this behavior as well where my POST was sending a GET. The scenario's pretty unique, but maybe it will help someone.
This was happening to me on my User Role-edit page, where I was using ajax (post) as an immediate action when a role was checked or unchecked.
I also had the server configured to re-authenticate the user (and redirect them) whenever their role information changed so that their claims would be refreshed.
The brutal cycle ended up as:
First Role Update -- POST -- 200 success
Next Role Update -- POST -- 302 Found -> Redirect (I did not notice this until I used Fiddler rather than Chrome's network monitor)
Redirect Call from (2) (Same URL) -- GET -- 404 Not Found (since I only allowed Post)
GOTO (1)
I ended up changing the server to bypass re-authentication/claims update when it detected an ajax request (based on the Accept Types).