difference between $.getJSON and $.get

ajax, jquery, json

Solution

The following two snippets are equivalent:

$.get("/some/url", {data: "value"}, function(json) { 
  // use json here
}, "json")

$.getJSON("/some/url", {data: "value"}, function(json) {
  // use json here
});

Saying that a request is for `JSON` means two things:

- jQuery sends an `Accept: application/json` header

- jQuery interprets the inbound response, converts it into a JavaScript Object, and passes it into the callback (so you don't have to mess with eval or other conversion mechanism).

A number of server-side frameworks (such as Rails) automatically detect the `Accept` header and handle the request appropriately. If you are using a different framework or rolling your own, you can inspect the `Accept` header to detect the format (instead of inspecting the parameters).

Problem

Is there really a difference in these two calls? If you use getJSON, you still have to declare `format=json` in the url... And you can do the same in `$.get()`, and iterate through the JSON-object. Or am I way off here?

Original source