2011-10-25 48 views
0

我不知道为什么会发生这种情况,因为此页面中还有其他函数也使用getJSON并且它们可以工作。我有以下的JavaScript代码getJSON不调用控制器动作

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

然而,该方法从未在调试器和数据调用此方法返回为空(这是什么我期望)。正如我之前说过的,在这个页面还有其他的调用,他们也在做GET请求,所以我不知道可能是什么原因。

+0

一旦检查您的服务和道可能是与这两个文件的问题? – Unknown

+0

检查它是否在IE开发人员/ Firebug –

+0

您的NET记录器发送/接收响应您确定对数据类型的操作响应:json? –

回答

1

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

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); 
    } 
}); 
+0

由于一些奇怪的原因,将其改为您在此处编写的方式后,即使是更奇怪的是,现在恢复到它再次工作之前的状态。它可能是IE缓存的东西吗? – groovejet

0

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