迭代通过json数组从asp.net函数返回

时间:2011-12-19 01:02:36

标签: jquery asp.net json

我有一些从asp.net函数返回的json。到目前为止我只测试了这个,但我现在所拥有的是:

Public Structure myarray
    Dim name As String
End Structure

<WebMethod()> _
Public Shared Function temp(ByVal strTerm As String) As String

    Dim user(1) As myarray
    user(0).name = "John"
    user(1).name = "Joe"

    Dim serializer As New JavaScriptSerializer()
    Dim arrayJson As String = serializer.Serialize(user)

    Return arrayJson

End Function

和我的jquery:

                jQuery.ajax({
                    type: "POST",
                    url: "default.aspx/temp",
                    data: "{'strTerm':'" + req.term + "'}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (data) {
                        var suggestions = [];
                        $.each(data, function (i, val) {
                            //alert(val);
                            suggestions.push(val);
                        });
                        add(suggestions);
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        alert('unable to create ticket');
                    }
                });

我在

中寻找什么
$.each(data, function (i, val) {
    //alert(val);
    suggestions.push(val);
 });

是获取我指定的每个名字,即John&amp; Joe并将它们添加到“suggestions”数组中。不确定Json的格式是否正确。

返回的json是:

[{"name":"John"},{"name":"Joe"}]

任何想法是如何做到这一点的正确方法?

谢谢,

2 个答案:

答案 0 :(得分:1)

数组中的每个项目都是json对象。因此,如果您要将名称推送到Recommend数组,则需要推送正在迭代的对象的name属性。

$.each(data, function (i, val) {
    //alert(val);
    suggestions.push(val.name);
});

注意:我会使用像Firebug或Chrome内置调试器这样的浏览器工具来确保返回和执行的JSON是您所期望的。根据我的经验,ASP.NET倾向于将其JSON响应包装在“d”属性中,因此您可能需要对data.d而不是数据采取行动。

答案 1 :(得分:0)

如果您只想添加名称,请执行以下操作:

suggestions.push(val.name); // The result would be ['John', 'Joe']

我不熟悉asp,但如果你使用JavaScript中的数据,那么JSON是最简单的方法。