我有一些从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"}]
任何想法是如何做到这一点的正确方法?
谢谢,
答案 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是最简单的方法。