首页新闻找找看学习计划

后台把转换后的json字符串传到前台,前台如何把字符串解析,得到字符串中想要的值

0
悬赏园豆:10 [已解决问题] 解决于 2013-09-29 16:39

这个是后台传到前台的字符串  {"Table":[{"CustomerID":"BAIDU","CompanyName":"BAIDU, Inc","ContactName":"Li YanHong","Address":"Lixiang guoji dasha,No 58, beisihuanxilu","City":"Beijing","PostalCode":"100080","Country":"China"}]} 

注:后台查询数据库返回dataset,然后把dataset转换成json格式传到前台。

前台我通过document.getElementById("txtHint").innerHTML =xmlhttp.responseText; 获取的这个字符串,如何能够获取这个字符串里面的CustomerID的值。

 

扎伊尔天雕的主页 扎伊尔天雕 | 初学一级 | 园豆:7
提问于:2013-09-29 15:28
< >
分享
最佳答案
0
var json = eval('(' + '{"Table":[{"CustomerID":"BAIDU","CompanyName":"BAIDU, Inc","ContactName":"Li YanHong","Address":"Lixiang guoji dasha,No 58, beisihuanxilu","City":"Beijing","PostalCode":"100080","Country":"China"}]}' + ')');
console.log(json.Table[0].CustomerID);
收获园豆:6
````` | 专家六级 |园豆:14268 | 2013-09-29 15:35

这个两个语句是写在前台?

我的思路是页面有一个select的选择下拉框,选取一个下拉框中一个项,下面有一个div就显示该条项的详细情况。现在我后台查询到了该项的详细情况的字符串,我需要把字符串转换成下面形式显示在某个div中

CustomerID:BAIDU

CompanyName:BAIDU.Inc

ContactName:Li YanHong

Address:Lixiang guoji

City:Beijing 

该怎么弄啊

扎伊尔天雕 | 园豆:7 (初学一级) | 2013-09-29 15:57

我行不通这个方法啊

凤城沙子 | 园豆:175 (初学一级) | 2015-10-27 09:23
其他回答(1)
0

data.Table[0].CustomerID,data是你ajax请求success的function里的返回参数

收获园豆:4
安沛 | 园豆:206 (菜鸟二级) | 2013-09-29 15:40

我前台script代码是这样写的:

 function showCustomer(str) {
        var xmlhttp;
        if (str == "") {
            document.getElementById("txtHint").innerHTML = "";
            return;
        }
        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        }
        else {// code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
//                var txt = xmlhttp.responseText;
                //                var obj = JSON.parse(txt);
                document.getElementById("txtHint").innerHTML =xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET", "ajaxDB.aspx?q=" + str, true);
        xmlhttp.send();
    }

支持(0) 反对(0) 扎伊尔天雕 | 园豆:7 (初学一级) | 2013-09-29 15:42

@大烦人打屁: 直接楼上的方法了。 var txt = xmlhttp.responseText;

var json = eval('(' + txt  + ')');

json.Table[0].CustomerID就是你要的值了。

支持(0) 反对(0) ````` | 园豆:14268 (专家六级) | 2013-09-29 15:49

@大烦人打屁:

试试

document.getElementById("txtHint").innerHTML =xmlhttp.responseText.Table[0].CustomerID;

支持(0) 反对(0) 安沛 | 园豆:206 (菜鸟二级) | 2013-09-29 15:49

@imfunny: 报错,在var json = eval('(' + txt  + ')')语句提示:运行时候出错:缺少')',是不是我后台转换json字符串的方法有问题

支持(0) 反对(0) 扎伊尔天雕 | 园豆:7 (初学一级) | 2013-09-29 16:02

@大烦人打屁: 

有问题检查下json的格式是不是正确的。

支持(0) 反对(0) ````` | 园豆:14268 (专家六级) | 2013-09-29 16:04

@安沛: 提示无法获取属性0的值,是不是不认识Table[0]?

支持(0) 反对(0) 扎伊尔天雕 | 园豆:7 (初学一级) | 2013-09-29 16:05

@imfunny: 

这个datset转换成json格式的方面我是在网上找的,您鉴定一下

public static string DataTable2Json(DataTable dt)
    {
        StringBuilder jsonBuilder = new StringBuilder();
        jsonBuilder.Append("{\"");
        jsonBuilder.Append(dt.TableName);
        jsonBuilder.Append("\":[");
       //Z jsonBuilder.Append("[");
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            jsonBuilder.Append("{");
            for (int j = 0; j < dt.Columns.Count; j++)
            {
                jsonBuilder.Append("\"");
                jsonBuilder.Append(dt.Columns[j].ColumnName);
                jsonBuilder.Append("\":\"");
                jsonBuilder.Append(dt.Rows[i][j].ToString());
                jsonBuilder.Append("\",");
            }
            jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
            jsonBuilder.Append("},");
        }
        jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
        jsonBuilder.Append("]}");
        return jsonBuilder.ToString();
    }

支持(0) 反对(0) 扎伊尔天雕 | 园豆:7 (初学一级) | 2013-09-29 16:07

@imfunny:

这个datatable转换成json格式的方面我是在网上找的,您鉴定一下

public static string DataTable2Json(DataTable dt)
    {
        StringBuilder jsonBuilder = new StringBuilder();
        jsonBuilder.Append("{\"");
        jsonBuilder.Append(dt.TableName);
        jsonBuilder.Append("\":[");
       //Z jsonBuilder.Append("[");
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            jsonBuilder.Append("{");
            for (int j = 0; j < dt.Columns.Count; j++)
            {
                jsonBuilder.Append("\"");
                jsonBuilder.Append(dt.Columns[j].ColumnName);
                jsonBuilder.Append("\":\"");
                jsonBuilder.Append(dt.Rows[i][j].ToString());
                jsonBuilder.Append("\",");
            }
            jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
            jsonBuilder.Append("},");
        }
        jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
        jsonBuilder.Append("]}");
        return jsonBuilder.ToString();
    }

支持(0) 反对(0) 扎伊尔天雕 | 园豆:7 (初学一级) | 2013-09-29 16:08

@大烦人打屁: JSON.parse(xmlhttp.responseText).Table[0].CustomerID就行

支持(0) 反对(0) 安沛 | 园豆:206 (菜鸟二级) | 2013-09-29 16:10

@大烦人打屁: 如果输出的内容有符号那不直接就错了?仔细检查下生成出来的json是不是标准的json格式吧。

支持(0) 反对(0) ````` | 园豆:14268 (专家六级) | 2013-09-29 16:10

@imfunny: 返回的xmlhttp.responseText是一个String,转成json再用json的方式读取就行了,你用的是原生的javascript实现的ajax,如果使用jquery就很简单

支持(0) 反对(0) 安沛 | 园豆:206 (菜鸟二级) | 2013-09-29 16:12

@imfunny: 我查看了json的标准格式,没有问题。

支持(0) 反对(0) 扎伊尔天雕 | 园豆:7 (初学一级) | 2013-09-29 16:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册