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.

enter image description here


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:

  1. First Role Update -- POST -- 200 success

  2. Next Role Update -- POST -- 302 Found -> Redirect (I did not notice this until I used Fiddler rather than Chrome's network monitor)

  3. Redirect Call from (2) (Same URL) -- GET -- 404 Not Found (since I only allowed Post)

  4. 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).