使用Javascript提取值

时间:2011-08-16 15:48:19

标签: javascript

我有一个名为“result”的变量,

var result;

结果值等于以下值,请假设只是一个字符串:)

---------结果值-----------

for (;;);{
     "send":1,
     "payload":{
         "config":{
             "website":"",
             "title":"welcome to site",
             "website-module":1313508674538,
             "manufatureid":"id.249530475080015",
             "tableid":"id.272772962740259",
             "adminid":100002741928612,
             "offline":null,
             "adminemail":"admin@website.com",
             "adminame":"George",
             "tags":"web:design:template",
             "source":"source:design:web",
             "sitelog":[],
             "errorlog":0,
             "RespondActionlog":0,
             "map":null
           },
        "imgupload":""
     },
     "criticalerror":[0],
     "report":true
 }

---------结果值------------

从这个值,我想用经典的Javascript提取tableid,它是“id.272772962740259”。

如何解析代码,请让我知道如何使用简单的javascript,请不要使用Jquery,我只需要简单的javascript。

4 个答案:

答案 0 :(得分:2)

您可以简单地评估变量的值以获取值。但请注意,您当前的值无效JSON;值的开头for(;;);使格式无效。删除它,你可以这样做:

var object = eval('(' + resultMinusThatForLoop + ')');

alert(object.payload.config.tableid);

答案 1 :(得分:1)

如果该数据是字符串,则使用JSON解析对其进行解析。以下应该得到你想要的值

JSON.parse(result).payload.config.tableid; // "id.272772962740259"

编辑:但是,正如Tejs所说,for(;;)使字符串无效并阻止其被解析。如果你可以删除它,那么。

答案 2 :(得分:0)

您需要删除空for循环,然后解析字符串。不要使用eval;大多数现代浏览器都提供内置的JSON解析工具,但如果您没有,则可以使用json2.js。假设您将解析JSON的结果分配给result,您应该能够使用result.payload.config.tableid获取该值。

你应该阅读一篇很好的JS参考资料。 JavaScript: The Good PartsEloquent JavaScript将是一个不错的选择。

答案 3 :(得分:0)

如果结果是javascript对象而不是字符串,则可以使用'result.payload.config.tableid'。

如果不是,您如何获得AJAX结果?你是直接使用XmlHttpRequest吗?大多数库都会给你一个javascript对象,你可能会丢失一个标志或者没有用正确的内容类型发回响应。

如果它是一个字符串并且您想手动解析它,则应该使用JSON解析器。较新的浏览器内置了一个window.JSON,但也有open source code用于解析它。

var obj = JSON.parse(result);
alert('tableid is ' + obj.payload.config.tableid);