Home » Jquery » JQuery Ajax is sending GET instead of POST

JQuery Ajax is sending GET instead of POST

Posted by: admin November 29, 2017 Leave a comment


The following code triggers a GET instead of a POST HTTP request.

function AddToDatabase() {
  this.url = './api/add';

AddToDatabase.prototype.postData = function(dataToPost) {
    type: "POST",
    url: this.url,
    data: dataToPost,
    context: this,
    success: this.onSuccess

var AddToDatabase = new AddToDatabase();
data = {data: 'coucou'};

Why, and how can I get a POST ?

I see in Google Chrome Inspect and Firefox Inspect that the browser sends a GET. Here is from Chrome:

Request URL:http://localhost/SAMPLE-CODES/UPDATE%20MYSQL/api/add/
Request Method:GET Status Code:200 OK


The URL called ‘./api/add’ was to actually post to ‘./api/add/index.php’. Turns out that calling ‘./api/add/index.php‘ or ‘./api/add/‘ gives me a POST request.

It was just a wrong URL, but for some reason I was getting a successful GET request to ‘.api/add/’.


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


  • 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

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


For me, your piece of code look OK, but if you want to be sure, you can use $.post instead of $.ajax

$.post('ajax/test.html', function(data) {

jquery link : http://api.jquery.com/jQuery.post/


I had the same problem and found this question but answers didn’t solve my problem. I eventually solve it by removing contentType field in ajax request.

contentType: "application/json",


Check out your .htaccess file or search for some other thing that may redirect your request


I had a similar issue and it started working for me as soon as I removed the hardcoded https:// from my url.

 type: "POST",
 url: "www.someurl.com",//instead of "https://www.someurl.com"
 data: { foo:"bar"},
 success: function(d){ console.log(d); },
 dataType: "JSONP"


I had this issue, and it turned out to be a URL Rewrite module in IIS.

I’m using ASP.NET MVC and WebAPI. I created rule to force lowercase URLs so social networks don’t view the same URL as two different pages.

For example:




This however, was somehow messing with my ajax requests. I disabled the rule and the problem was resolved.