2017-03-09 4 views
0

なぜこのJQuery関数はpostで動作しますか?しかし、getではありませんか?私はデータベース内の何か情報を返すために何も変更したくない...パラメータを渡しているように、Ajaxtype: postを認識しているだけで、何も変更しないことがわかっているようだ。私がtype:"post"を使用しない場合、コントローラのアクションのパラメータはnullになります。なぜこのJQuery関数はポストで動作するのですか?

$(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({graduate:grad})はその機能を壊すだろうか? – Taintedmedialtd

+0

そうかもしれません。私は問題である可能性のある他のものを見ることができません。 – spirift

0

[HttpPost]をコントローラメソッドに追加すると、投稿されたデータを受け入れることができます。

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

そしてCMIPGraduateVMタイプあなたは卒業生の変数で提供している構造と一致した(var grad = $(".link").data("graduate");ない、これは文字列やブールまたはオブジェクトであるかどうかわからなど)graduateプロパティを持つクラスである必要があります。

関連する問題