I wrote recently an answer to the question \"jqGrid display default “loading” message when updating a table / on custom update\". While writing the answer I thought: why doe
When you need to have complete control on how and when the ajax is send, you will prefer to use addJSONData.
e.g. A search form contains two box, both ajaxly populated, the value of the first select would affect the second one. It is possible that user have set default value for the select boxes. And you want to search the grid only after the two values are defined.
It is then more preferable to use things like $.Deferred to control the order of ajax calls being made and populate. Of course you can set jqgrid data as local then to json, and then reloadGrid to control the triggering. But it's just not that trival.