2011-10-25 34 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方法。例如,使用任何瀏覽器螢火蟲進行檢查都很容易。

相關問題