首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在jquery中获取结果“未定义”

在jquery中获取结果“未定义”
EN

Stack Overflow用户
提问于 2018-06-20 06:42:36
回答 2查看 369关注 0票数 0

我正在尝试使用ajax为我的asp.net应用程序显示一些值。

这是我的C#代码

代码语言:javascript
复制
[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是:

代码语言:javascript
复制
<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(数据)的输出是

代码语言:javascript
复制
[{"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值。

代码语言:javascript
复制
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输出时,我不明白为什么输出仍然是未定义的和正确的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-20 07:55:20

您确定console.log(数据)的输出是这样吗?

代码语言:javascript
复制
[{"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和电子邮件。

代码语言:javascript
复制
"PWD":mghjgh76,"Email":titus@domain.com

正确的格式应是:

代码语言:javascript
复制
"PWD":"mghjgh76","Email":"titus@domain.com"

然后,解决方案是,在C#代码中,当向用户添加新对象时,确保这些属性是字符串的。

代码语言:javascript
复制
PWD = dt.Rows[i]["PWD"].ToString(),
Email = dt.Rows[i]["Email"].ToString(),

正如我在您的图片中所看到的,您上传的是结果,d当前是字符串格式,所以您应该使用$.parseJSON

代码语言:javascript
复制
var users = $.parseJSON(result.d);

(PWD和电子邮件应该像我前面所说的那样是字符串格式,以使parseJSON正常工作)

票数 0
EN

Stack Overflow用户

发布于 2018-06-20 07:02:39

试试下面的代码。

代码语言:javascript
复制
 var data = $.parseJSON(result);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50941825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档