首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从简单的对象文字中提取变量?

如何从简单的对象文字中提取变量?
EN

Stack Overflow用户
提问于 2012-12-25 07:20:38
回答 4查看 208关注 0票数 0

我已经创建了我的第一个AJAX-JSON项目,没有发布任何(愚蠢的)问题,除了这个小问题:

代码语言:javascript
复制
function processEvent(data)  {  
var evt = $(data).text();
   } 

当我编写alert(Evt)时,我看到以下内容:

代码语言:javascript
复制
{meat:'beef',vegetable:'carrots',potato:'mashed'}

我可以使用以下代码从变量'evt‘中提取单词'beef’:

代码语言:javascript
复制
  evt.substr(7,4)

但如果我写道:

代码语言:javascript
复制
  evt.meat

我得到一个错误:未定义。如何在不使用字符串操作的情况下直接检索变量'meat‘的值?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-25 08:12:15

如果您的evt数据是JSON,那么您可以解析它并获得肉类属性。目前还不是,这个JSON的{meat:'beef',vegetable:'carrots',potato:'mashed'}应该是{"meat":"beef","vegetable":"carrots","potato":"mashed"}。请注意,使用了双引号而不是单引号,属性也用引号括起来。

代码语言:javascript
复制
function processEvent(data)  {  
var evt = $(data).text();// === {"meat":"beef","vegetable":"carrots","potato":"mashed"}
    evtObj = $.parseJSON(evt);
    alert(evtObj.meat); //shows beef
} 
票数 1
EN

Stack Overflow用户

发布于 2012-12-25 07:26:39

这是因为在这一点上,您专门将evt设置为一个字符串。根据data表示的内容( JSON字符串数据或从JSON解析的对象,或DOM节点-如果代码示例中没有更多上下文,我不知道是哪一个),您可能需要做一些事情来获得对象表示。您至少可以这样做,将字符串解析为JSON:

代码语言:javascript
复制
var evt = JSON.parse($(data).text());

然而,我猜测您可能已经有了一个对象表示,您正在通过调用text()将其转换为一个字符串,因此这里可能会进行一些不必要的序列化/反序列化。

票数 1
EN

Stack Overflow用户

发布于 2012-12-25 07:26:58

您需要使用JSON.parse()将JSON字符串转换为相应的数据。

代码语言:javascript
复制
var evt = JSON.parse($(data).text());
console.log(evt.meat);

jQuery可以自动为您完成此操作。以下任一项:

  1. 调用$.getJSON()执行AJAX调用。
  2. 在AJAX调用的options参数中指定dataType: 'json'
  3. 服务器发送标头'Content-type: Content
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14026441

复制
相关文章

相似问题

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