2017-03-09 146 views
0

爲什麼這個JQuery函數與post一起使用?但不是get?我不想改變數據庫中的任何內容,只是爲了返回一些信息......看起來就像我傳遞參數一樣,它只是在Ajax中識別出type: post,即使我的意圖不是要改變任何東西。如果我不使用type:"post"我在控制器操作中的參數將是null爲什麼這個JQuery函數只適用於post?

$(document).ready(function() {  
    $(".link").click(function() {  
     var grad = $(".link").data("graduate") 
     $.ajax({ 
      type: "post", 
      url: $(".link").data("url"),  
      data: JSON.stringify({ graduate: grad }),    
      contentType: "application/json; charset=utf-8" 
     }) 
     $("#myModal").modal("show"); 
    }) 
}) 

這是我的控制器:

public ActionResult PopulateModal(CMIPGraduateVM graduate) 
     { 
      return PartialView(graduate); 
     } 
+3

因爲您無法通過http get傳遞消息正文。 – Igor

+0

假設'grad'是一個包含匹配模型屬性的名稱/值對的對象,它只需要'data:grad'(並刪除'contentType'選項) –

回答

1

您可以在POST請求的主體發送數據。您只能使用URL參數傳遞GET請求的數據,例如url.com?this=that & so = on

+1

jQuery將數據轉換爲get的查詢字符串。 http://api.jquery.com/jquery.ajax/ – spirift

+1

從來沒有新的。當然JSON.stringify({畢業生:畢業生})會打破那個功能呢? – Taintedmedialtd

+0

這很可能。我看不到任何可能是問題的東西。 – spirift

0

[HttpPost]添加到您的控制器方法以允許它接受發佈的數據。

[HttpPost] 
public ActionResult PopulateModal(CMIPGraduateVM graduate) 
{ 
    return PartialView(graduate); 
} 

而且CMIPGraduateVM必須具有graduate屬性,其類型,你與畢業生提供可變的結構相匹配的類(var grad = $(".link").data("graduate");不知道這是一個字符串或布爾或物體等)。

相關問題