繁体   English   中英

getJSON没有调用控制器操作

[英]getJSON is not calling the controller action

我不知道为什么会这样,因为此页面中还有其他函数也使用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请求,所以我不知道可能是什么原因。

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

尝试添加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);
    }
});

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM