访问使用JSON发送的数组

时间:2014-06-03 04:56:46

标签: javascript asp.net ajax arrays json

我有以下数组

 var array = []; // It has (48.154176701412744,11.551694869995117),(48.15131361676726,11.551694869995117),(48.15555092529958,11.549291610717773) saved in it.

这就是我如何通过ajax将它发送到我的aspx页面

 function result() {
     var jsonText = JSON.stringify({ list: array });
    $.ajax({
        url: "test.aspx/Demo", type: "POST", dataType: "json",
        contentType: "application/json; charset=utf-8",
        data: jsonText,
        success: function (data) { alert("it worked"); },
        error: function () { alert("Uh oh"); }
    });
    return false;
}

这就是我在aspx中访问它的方式

public static void Demo(double[] list)
{

}

但是当我尝试打印时,它会给我“0 0 0”。当我试图像

那样访问它时
public static void Demo(string[] list)
{

}

上述方法甚至不接受JSON对象。那么,由于该方法甚至不接受JSON对象,应该使用适当的数据类型来访问此数组?或者告诉我在JS中拆分字符串(xyz,xyz),(xyz,xyz)的方法,以便我可以将其转换为字符串并将其作为字符串与JSON一起发送?

2 个答案:

答案 0 :(得分:1)

我的猜测是您接受的Web方法参数类型不正确。将Web方法的参数类型更改为List<Dictionary<string,string>>,这样大多数对象都可以正确反序列化,特别是如果它是JSON类型,如示例所示。

尚未获得谷歌地图API的经验,快速搜索显示它可能看起来像这样:

var coord = { "lat" : "xx.xxxxxxx", "long" : "yy.yyyyyyyy" };

如果确实如此,类型List<Dictionary<string,string>>的参数将正确反序列化您通过AJAX调用传递的JSON数组。

下面是如何遍历提供给您的Web方法的列表并构建所有坐标的字符串的示例:

StringBuilder sb = new StringBuilder();
foreach (Dictionary<string, string> coord in list)
{
    sb.Append(string.Format("({0},{1})", coord["lat"], coord["long"]));
}

当然,您可以更改构建字符串的格式以满足您的要求。同样,假设是字典被反序列化为&#34; lat&#34;和#34;长&#34;,其中我不确定。希望它有所帮助!

答案 1 :(得分:-1)

使用此

更改数组
var array = [[48.154176701412744,11.551694869995117],[48.15131361676726,11.551694869995117],[48.15555092529958,11.549291610717773]];

希望这会有所帮助