2016-04-29 23 views
2

私は有線JSON問題を抱えています。私はASP C#で作業していて、ビューをJS-Arrayをコントローラアクションに送信しています。C#でJSON配列が正しく認識されない

ここにJSONデータの構造を示します。

私はJSON配列を生成するために私が使用するルーチンを示します。テスト目的のために、有効なMapDataは生成されません。

$("#pac-save").click(function() { 
    var mapPoints = { 
     Points: [] 
    } 

    mapPoints.Points.push({ 
     lat:"asdf1", 
     lng:"asdf1" 
    }) 
    mapPoints.Points.push({ 
     lat:"asdf2", 
     lng:"asdf2" 
    })  
    $.ajax({ 
     url: "/Map/saveGeplanteRoute", 
     data:mapPoints 
    }).done(function (dd) { 
     alert("done"); 
    }).fail(function() { 
     alert("error"); 
    }); 
}) 

ここでは、コントローラのアクション

public JsonResult saveGeplanteRoute(MapData data) 
{ 
    var test = new MapData 
    { 
     Points = new List<Point>() 
    }; 
    test.Points.Add(new Point() { lat = "asdf1", lng = "asdf1" }); 
    test.Points.Add(new Point() { lat = "asdf2", lng = "asdf2" }); 
    return Json(test); 
} 

奇妙なことだ:私はそれを送信する前にデータを文字列化すると、それは次のようになります。

"{"Points":[{"lat":"asdf1","lng":"asdf1"},{"lat":"asdf2","lng":"asdf2"}]}" 

データは、コントローラのルックスから戻ってくるが、私はそれを文字列化するとき、まったく同じです:C#でPointデータを解析できないのはなぜですか?ポイントデータの量は、あなたが以下を参照することができます右の通りである:

JSON data

私は私はあなたが生成するJavaScriptで

+0

行うことができます 'Point'クラスがどのようなものが見えますか? –

+0

ただ気づいた。ありがとう。 –

答えて

4

GET

から POSTへの変更HTTPメソッド
$.ajax({ 
     url: "/Map/saveGeplanteRoute", 
     type: "POST", 
     data: mapPoints 
    }).done(function (dd) { 
     alert("done"); 
    }).fail(function() { 
     alert("error"); 
    }); 

GET方法はないURL文字列を使用してデータを送信しJSON優しい

+0

ありがとうございました。トリックをやった – climbah

0

が見つかりませんでしたエラーに私を指しているいくつかのアドバイスに喜んでいますよテストデータは、置く彼はLATと引用符の間のLNG名:mapPoints.Points.push({ "LAT": "asdf1"、 "LNG": "asdf1"})

0

あなたは、ヨールHTTP GETを発行し、URLに配列をシリアライズそのようにあなたを$アヤックスコールのメソッドを設定しない場合大きな配列をシリアライズしようとすると、URLの長さに問題があります。

より良い方法は、ポストコールを送信し、コールの体に配列をシリアライズすることができ、これはそのよう

$.ajax({ 
    url: "/home/saveGeplanteRoute", 
    data: mapPoints, 
    method: 'POST' 
}) 
.done(function (dd) { 
    alert("done"); 
}).fail(function() { 
    alert("error"); 
}); 
関連する問題