通过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'属性中,因此您可能需要采取行动而不是数据。
如果你只想要添加的名称做:
suggestions.push(val.name); // The result would be ['John', 'Joe']
我不熟悉的ASP,但如果你在JavaScript中的数据工作,那么JSON是最简单的方法。
是啊我试过了,但我似乎得到的是“未定义”,如果我要警惕(val.name);出。我想知道它的json结构... – thegunner 2011-12-19 01:19:42
用'console.log(data)'和用户chrome或firebug JavaScript-console检查'data'的结构。 – 2011-12-19 02:04:49
检查JSON实际返回的内容。 chrome开发工具有一个网络部分在http请求的基础上查看响应和标题。 – 2011-12-19 02:06:43
(与上面相同)...是的,我试过了,但我似乎得到的是“未定义”,如果我要警惕(val.name);出。我想知道如果它的JSON结构... – thegunner 2011-12-19 01:20:11
您是否尝试过data.dd而不是数据?就像我说的,很可能ASP.NET已经将响应包装在一个d属性中。 – villecoder 2011-12-19 01:45:01
是啊试过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