I am trying to send a json object using GET method. My code:
$.ajax({
url: "/api/endpoint",
type: "GET",
data: {"sort":"date"},
contentType: "application/json",
dataType: "json",
...
However, the headers received have "Content-Length" set to zero, hence my json parser on the server doesn't read the content.
I have already tried setting content length header, but it still comes to the server as zero:
$.ajax({
url: "/api/endpoint",
headers: {"CONTENT_LENGTH",JSON.stringify({"sort":"date"}).length},
type: "GET",
data: {"sort":"date"},
contentType: "application/json",
dataType: "json",
...
Any idea how to get this working? It HAS to be GET request.
GET requests (at least usually) do not have a message body. As mentioned in the docs, jQuery appends data
of GET requests to the url parameters. You should be able to read your sort
parameter from there with your server application.
BTW, no user agent will allow you to set the Content-Length
header - it will (and must) be done automatically depending on the sent data.
There are a few places where you have gone a bit wrong.
CONTENT_LENGTH
, its Content-Length
.Content-Length
header, the browser will do it for you.Something like the below should work for you:
$.ajax({ url: "/api/endpoint?parameters="+encodeURIComponent(JSON.stringify({"sort":"date"})), type: "GET", ... });
I think you should use JSON.stringify for GET parameters in URL like this:
$.ajax({
url: "/api/endpoint?parameters="+JSON.stringify({"sort":"date"}),
type: "GET",
contentType: "application/json",
dataType: "json",
...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With