我不知道为什么会发生这种情况,因为此页面中还有其他函数也使用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请求,所以我不知道原因可能是什么。
答案 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进行检查都很容易。