2017-03-17 15 views
0

JsonをAction Controllerに送信していますが、何らかの理由でJson文字列の最初と最後の要素がアクションコントローラで正しく受信されていないようです中括弧は、最後の要素の値として追加され、かつNULL可能フィールドであるか、それがint型である場合、その値は0 これは私のjQueryのコードであるとき、最初の要素は常にNULLであること:jQueryからMVCコントローラにjsonを送信する問題

$(function() { 
     $("#myButton").click(function() { 
      var student= JSON.stringify($("#myForm").serialize()); 
alert(student); 
$.ajax({ 
       type: 'post', 
       url: $("#myForm").data("url"), 
       data: JSON.stringify({ 'policy': student}), 
       success: //more code.. 
}) 

アラートを使用して$("#myForm").serialize()の値を表示していますが、アラートが実行されたときに値が正しく設定されています。問題はアクションコントローラへの途中です。 first_field= null(is a nullable field in my Model) そしてlast_field = "\\\"\"}" .ITは3つのエスケープ文字が含まれて私は価値がある受信していることを想像して:アクションコントローラによって受信されたときにそのjson stringについては

"first_field=7.5&aut_id=3456690&..........more info in here no 
problem..........&birthday=&last_field=" 

が、これはそれが得るものです:これは警告メッセージが表示するものです= \""}

何が起こっていますか?真ん中にあるが正しく受信されている他のすべての値は、それがエッジ

でちょうど彼のものだこれは私のアクションコントローラである:

 [HTTPPost] 
    public ActionResult EditStudent(Student student) 
    { 
    //some code... 
    } 
+1

ではなく、二回にする必要があるということ。 'data:$("#myForm ")。serialize())' –

+0

@StephenMueckeこれは今、おかげさまで動作します。答えとして投稿したい場合は、それを行うことができます。私は答えとして選択します:) – AlexGH

答えて

1

あなただけのシリアル化されたデータ

を使用してデータを送信することができますあなたはデータを文字列化した場合、あなたはまた、Sに必要 contentType

のデフォルト'application/x-www-form-urlencoded; charset=UTF-8'を使用します

$.ajax({ 
    .... 
    data: $("#myForm").serialize(), 

contentType'application/json',にとてもDefaultModelBinderがあなたのデータを変換するJsonValueProviderを使用し、その場合にはフォーマットは確か

$.ajax({ 
    .... 
    data: JSON.stringify($("#myForm").serialize()), 
    contentType: 'application/json; charset=UTF-8', 
あなたが何かを文字列化する必要はありません
関連する問題