我正在调用ajax调用函数后面的代码。 我刚刚创建了一个方法Post,它返回一个列表。 我只想检查客户端的值。因此,只需输出一条警报消息并将response.d作为参数传递。但它返回object,Object而不是实际值。 我想知道获取值的确切方法吗?
[WebMethod]
public static List<person> Post()
{
List<person> List = new List<person>();
person p1 = new person();
p1.name = "Sourav";
p1.surname = "Kayal";
List.Add(p1);
person p2 = new person();
p2.name = "Sourav";
p2.surname = "Kayal";
List.Add(p2);
return List;
}
}
public class person
{
public string name { get; set; }
public string surname { get; set; }
}
<script>
$(document).ready(function () {
$.ajax({
type: "POST",
url: "JavaScript.aspx/Post",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
var names = response.d;
alert(names);
},
failure: function (response) {
alert(response.d);
}
});
});
</script>
答案 0 :(得分:1)
尝试
var names = JSON.parse(response);
alert(names.d);
alert(names.name);
alert(names.surname);
答案 1 :(得分:1)
为了让您的jQuery工作,您还需要在C#代码中序列化List<person>
-
而不是
return List;
添加以下代码 -
//Add the below using line on the top of the page where all using directives are present
using System.Web.Script.Serialization;
var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(List);
return json;
由于您使用的是jQuery - 我们可以使用以下代码来解析JSON对象 -
$(document).ready(function () {
$.ajax({
type: "POST",
url: "JavaScript.aspx/Post",
contentType: "application/json; charset=utf-8",
dataType: "text",
success: function (response) {
var obj = jQuery.parseJSON(response);
alert(obj.name);
alert(obj.surname);
},
failure: function (response) {
alert(response.d);
}
});
});
在上面的代码更改成功函数中,您应该从JSON对象获取值。
根据评论编辑: 以下行 -
var json = jsonSerialiser.Serialize(List);
Produces string value of:
[
{"name":"Sourav","surname":"Kayal"},
{"name":"Sourav","surname":"Kayal"},
]
示例参考详情 - CLICK HERE
答案 2 :(得分:0)
在success函数中尝试控制台日志记录(或F12 JavaScript调试)以查看响应对象及其成员。 [Object,object]应该是JavaScript尝试将对象(代码)转换为字符串失败。您可能会找到&#34;确切的值&#34;循环如此:
var surnames = [], prop, i;
for (item in response) {
if (item.hasOwnProperty('surname')) {
surnames.push(item.surname);
}
}
// Or
for(var i = 0; i < response.length; i++) {
if(typeof response[i]['surname'] === 'string') {
surnames[i] = response[i]['surname'];
}
}