我正在尝试使用ajax为我的asp.net应用程序显示一些值。
这是我的C#代码
[WebMethod]
public static string fillvazh(int id)
{
List<object> Users = new List<object>();
DataTable dt = new DataTable();
string query = "select Id,Name, PWD,Email,Mobile from Users where active='Y' and PM_Id='" + id + "' ";
dt = GetData(query); //Common function for getting data from db using DataAdapter
for (int i = 0; i < dt.Rows.Count; i++)
{
Users.Add(new
{
Id = dt.Rows[i]["Id"],
Name = dt.Rows[i]["Name"],
PWD = dt.Rows[i]["PWD"],
Email = dt.Rows[i]["Email"],
Mobile = dt.Rows[i]["Mobile"],
});
}
var json = (new JavaScriptSerializer().Serialize(Users));
return json;
}我的Jquery是:
<script type="text/javascript">
$(document).ready( function ( e ) {
$("[id*=pmid]").click(function () {
vl = $(this).data("val");
$.ajax({
type: "POST",
url: 'Default.aspx/fillvazh',
data: '{id:'+ vl +'}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
var data = result.d;
// var data = [{"Id":1,"Name":"Sam","PWD":iu875t,"Email":samjohn@domain.com,"mobile":"XXXXXXXX"},{"Id":2,"Name":"Titus","PWD":mghjgh76,"Email":titus@domain.com,"mobile":"XXXXXXXX"}]; //Working correctly.
var tr;
for (var i = 0; i < data.length; i++) {
tr = $('<tr/>');
tr.append("<td>" + data[i].Id + "</td>");
tr.append("<td>" + data[i].Name + "</td>");
tr.append("<td>" + data[i].PWD+ "</td>");
$('#gvCustomers').append(tr);
}
},
failure: function (response) { },
error: function (response) { }
});
});
});
</script>Console.log(数据)的输出是
[{"Id":1,"Name":"Sam","PWD":iu875t,"Email":samjohn@domain.com,"mobile":"XXXXXXXX"},{"Id":2,"Name":"Titus","PWD":mghjgh76,"Email":titus@domain.com,"mobile":"XXXXXXXX"}]输出是未定义的,但是当我试图对控制台数据进行硬编码时,输出通常是正常的,这意味着如果我直接使用结果.d值。
var data = [{"Id":1,"Name":"Sam","PWD":iu875t,"Email":samjohn@domain.com,"mobile":"XXXXXXXX"},{"Id":2,"Name":"Titus","PWD":mghjgh76,"Email":titus@domain.com,"mobile":"XXXXXXXX"}];当硬编码我的json输出时,我不明白为什么输出仍然是未定义的和正确的。
发布于 2018-06-20 07:55:20
您确定console.log(数据)的输出是这样吗?
[{"Id":1,"Name":"Sam","PWD":iu875t,"Email":samjohn@domain.com,"mobile":"XXXXXXXX"},{"Id":2,"Name":"Titus","PWD":mghjgh76,"Email":titus@domain.com,"mobile":"XXXXXXXX"}]如果是这样,问题可能是属性PWD和电子邮件。
"PWD":mghjgh76,"Email":titus@domain.com正确的格式应是:
"PWD":"mghjgh76","Email":"titus@domain.com"然后,解决方案是,在C#代码中,当向用户添加新对象时,确保这些属性是字符串的。
PWD = dt.Rows[i]["PWD"].ToString(),
Email = dt.Rows[i]["Email"].ToString(),正如我在您的图片中所看到的,您上传的是结果,d当前是字符串格式,所以您应该使用$.parseJSON
var users = $.parseJSON(result.d);(PWD和电子邮件应该像我前面所说的那样是字符串格式,以使parseJSON正常工作)
发布于 2018-06-20 07:02:39
试试下面的代码。
var data = $.parseJSON(result);https://stackoverflow.com/questions/50941825
复制相似问题