Récupérer une chaîne json du coté de ASP.NET
Bonjour,
Je bute sur la récupération d'une chaîne json du coté de ASP.NET, je l'ai déjà fait mais là je pense que je dois faire une erreur que j'arrive plus à "voir" malgré la longue veille. Si quelqu'un peut m'apporter ses lumière, je lui en saurai gré :
C'est sous VS 2010 ou supérieur, voici le code HTML+JS
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$('#Result').click(function () {
//var jsonText = '{"data": [{"espid": [9,11], "metid": [9,13,17]}]}';
var jsonText = '{"espid": [9,11], "metid": [9,13,17]}';
$.ajax({
type: "POST",
url: "WebForm1.aspx/GetCasesXYByParm",
data: jsonText,
contentType: "application/json",
dataType: "json",
success: function (msg) {
// Replace the div's content with the page method's return.
$("#Result").text(msg.d);
}
});
});
</script>
<style type="text/css">
#Result
{
cursor: pointer;
}
</style>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<br />
<div id="Result">
Click Me to grab Data.</div>
</asp:Content> |
et le code behind en C# qui pose problème :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
using Newtonsoft.Json;
using System.Web.Services;
[WebMethod]
public static string GetCasesXYByParm(string rawJson)
{
Dictionary<string, int[]> myDic = JsonConvert.DeserializeObject<Dictionary<string, int[]>>(rawJson);
int[] espid = myDic["espid"];
int[] metid = myDic["metid"];
//grab data from factory
List<CASEXY> casesxy = FactoryCasesXY(espid, metid);
//sérialiser!!
string jsonData = JsonConvert.SerializeObject(casesxy);
return jsonData;
} |
La récupération de mon rawJson ne passe pas et je ne sais plus trop comment m'y prendre.
En vous remerciant par avance.
nachtigal!!
Il faut veiller au formatage de son json...
Voici la solution au cas où cela pourrait intéresser quelqu'un :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
<script>
$('#Result').click(function () {
var ratus = new Object();
ratus.espid = [9, 11];
ratus.metid = [9, 13, 27];
var myjson = new Object();
myjson.data = ratus;
var jsonText = JSON.stringify(myjson);
$.ajax({
type: "POST",
url: "Default.aspx/GetCasesXYByParm",
data: jsonText,
contentType: "application/json",
dataType: "json",
success: function (msg) {
// Replace the div's content with the page method's return.
$("#Result").text(msg.d);
},
failure: function (response) {
alert(response.d);
},
error: function (response) {
alert(response.d);
}
});
});
</script> |
et modifier également le codebehind correspondant de cette manière :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
[WebMethod]
public static string GetCasesXYByParm(MyJSON data)
{
}
public class MyJSON
{
public List<int> espid { get; set; }
public List<int> metid { get; set; }
} |
Voilà, cette fois ça passe ; le problème venait d'un mauvais formatage du json envoyé à la WebMethode !!