getJSON没有调用控制器动作

时间:2011-10-25 12:17:23

标签: javascript jquery json asp.net-mvc

我不知道为什么会发生这种情况,因为此页面中还有其他函数也使用getJSON并且它们确实有效。我有以下JavaScript代码

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");
        });

    }

然后我在SalesOrderController类

上有这个方法
public JsonResult GetSOPNote(int sodId)
        {
            var service = new SodSrv();
            var note = service.GetSOPNotes(sodId);
            return Json(note, JsonRequestBehavior.AllowGet);            
        }

但是,在调试器中永远不会调用该方法,并且数据将返回null(这是我所期望的)。正如我之前所说,此页面中还有其他调用,他们也在进行GET请求,所以我不知道原因可能是什么。

3 个答案:

答案 0 :(得分:1)

听起来浏览器正在从缓存中提取数据,因为它是一个get请求。如果不打算缓存,请确保在服务器上没有设置缓存标头。

答案 1 :(得分:0)

尝试添加error处理程序以尝试追踪问题所在:

$.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);
    }
});

答案 2 :(得分:0)

我怀疑原因是getJSON使用get方法,而控制器通常只允许接受post方法。例如,使用任何浏览器firebug进行检查都很容易。