paddingtonMike
paddingtonMike

Reputation: 1603

getJSON is not calling the controller action

I don't know why this is happening since there are other functions in this page that use also getJSON and they do work. I have the following JavaScript Code

function openSOPNotesDialog() {

        var url = '<%: Url.Action("GetSOPNote", "SalesOrder") %>';
        var id = <%: Model.SodID %>;

        $.getJSON(url, { sodId : id }, function(data) {
            alert("data: " + data);
            $("#hidSOPSODId").val(data.SodID);
            $("#hidNoteId").val(data.NoteID);
            $("#txtSOPNotes").val(data.Description);
            $("#sopNotesDialog").dialog("open");
        });

    }

and then I have this method on the SalesOrderController class

public JsonResult GetSOPNote(int sodId)
        {
            var service = new SodSrv();
            var note = service.GetSOPNotes(sodId);
            return Json(note, JsonRequestBehavior.AllowGet);            
        }

However, the method is never called in the debugger and data is returned as null (which is what I'd expect). As I said before there are other calls in this page and they are also doing GET requests so I don't know what may be the cause.

Upvotes: 0

Views: 4290

Answers (3)

Saulius
Saulius

Reputation: 2006

I suspect that the reason is that getJSON uses get method and controllers normally allowed to accept only post methods. It's ease to check using any browser firebug for example.

Upvotes: 0

epascarello
epascarello

Reputation: 207501

Sounds like the browser is pulling the data from the cache since it is a get request. Make sure to set no cache headers on the server if it is not meant to be cached.

Upvotes: 1

Duncan Smart
Duncan Smart

Reputation: 32058

Try adding an error handler to try to track down what the issue is:

$.ajax({
    dataType: 'json',
    url: url,
    data: { sodId : id },
    success: function(data) {
        alert("data: " + data);
        $("#hidSOPSODId").val(data.SodID);
        $("#hidNoteId").val(data.NoteID);
        $("#txtSOPNotes").val(data.Description);
        $("#sopNotesDialog").dialog("open");                        
    },
    error: function(jqXHR, textStatus, errorThrown) {
        alert("oops: " + textStatus + ": " + jqXHR.responseText);
    }
});

Upvotes: 0

Related Questions