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

问题描述:

我有一些从asp.net函数返回的json。我只测试了这一点,到目前为止,但我目前所面对的是:通过json数组迭代从asp.net函数返回

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); 
}); 

是要获得我指定的每个名称,即约翰& Joe并将它们添加到“suggestions”数组。不确定Json是否使用正确的格式。

返回的JSON是:

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

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

谢谢,

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

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

注意:我会利用类似Firebug或Chrome内置的调试器浏览器的工具,以确保返回并采取行动是你期望的JSON。我的经验是,ASP.NET倾向于将其JSON响应包装在'd'属性中,因此您可能需要采取行动而不是数据。

+0

(与上面相同)...是的,我试过了,但我似乎得到的是“未定义”,如果我要警惕(val.name);出。我想知道如果它的JSON结构... – thegunner 2011-12-19 01:20:11

+0

您是否尝试过data.dd而不是数据?就像我说的,很可能ASP.NET已经将响应包装在一个d属性中。 – villecoder 2011-12-19 01:45:01

+0

是啊试过data.d ...也不太对。基本上我在.net上试用这篇文章:http://net.tutsplus.com/tutorials/javascript-ajax/how-to-use-the-jquery-ui-autocomplete-widget/ – thegunner 2011-12-19 01:56:05

如果你只想要添加的名称做:

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

我不熟悉的ASP,但如果你在JavaScript中的数据工作,那么JSON是最简单的方法。

+0

是啊我试过了,但我似乎得到的是“未定义”,如果我要警惕(val.name);出。我想知道它的json结构... – thegunner 2011-12-19 01:19:42

+0

用'console.log(data)'和用户chrome或firebug JavaScript-console检查'data'的结构。 – 2011-12-19 02:04:49

+0

检查JSON实际返回的内容。 chrome开发工具有一个网络部分在http请求的基础上查看响应和标题。 – 2011-12-19 02:06:43