Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jquery - How to make $.post() use contentType=application/json?

I've noticed that when using $.post() in jquery that the default contentType is application/x-www-form-urlencoded - when my asp.net mvc code needs to have contentType=application/json

(See this question for why I must use application/json: ASPNET MVC - Why is ModelState.IsValid false "The x field is required" when that field does have a value?)

How can I make $.post() send contentType=application/json? I already have a large number of $.post() functions, so I don't want to change to $.ajax() because it would take too much time

If I try

$.post(url, data, function(), "json")  

It still has contentType=application/x-www-form-urlencoded. So what exactly does the "json" param do if it does not change the contenttype to json?

If I try

$.ajaxSetup({   contentType: "application/json; charset=utf-8" }); 

That works but affects every single $.get and $.post that I have and causes some to break.

So is there some way that I can change the behavior of $.post() to send contentType=application/json?

like image 808
JK. Avatar asked May 16 '10 21:05

JK.


1 Answers

$.ajax({   url:url,   type:"POST",   data:data,   contentType:"application/json; charset=utf-8",   dataType:"json",   success: function(){     ...   } }) 

See : jQuery.ajax()

like image 199
Adrien Avatar answered Sep 25 '22 20:09

Adrien