我已经创建了我的第一个AJAX-JSON项目,没有发布任何(愚蠢的)问题,除了这个小问题:
function processEvent(data) {
var evt = $(data).text();
} 当我编写alert(Evt)时,我看到以下内容:
{meat:'beef',vegetable:'carrots',potato:'mashed'}我可以使用以下代码从变量'evt‘中提取单词'beef’:
evt.substr(7,4)但如果我写道:
evt.meat我得到一个错误:未定义。如何在不使用字符串操作的情况下直接检索变量'meat‘的值?
发布于 2012-12-25 08:12:15
如果您的evt数据是JSON,那么您可以解析它并获得肉类属性。目前还不是,这个JSON的{meat:'beef',vegetable:'carrots',potato:'mashed'}应该是{"meat":"beef","vegetable":"carrots","potato":"mashed"}。请注意,使用了双引号而不是单引号,属性也用引号括起来。
function processEvent(data) {
var evt = $(data).text();// === {"meat":"beef","vegetable":"carrots","potato":"mashed"}
evtObj = $.parseJSON(evt);
alert(evtObj.meat); //shows beef
} 发布于 2012-12-25 07:26:39
这是因为在这一点上,您专门将evt设置为一个字符串。根据data表示的内容( JSON字符串数据或从JSON解析的对象,或DOM节点-如果代码示例中没有更多上下文,我不知道是哪一个),您可能需要做一些事情来获得对象表示。您至少可以这样做,将字符串解析为JSON:
var evt = JSON.parse($(data).text());然而,我猜测您可能已经有了一个对象表示,您正在通过调用text()将其转换为一个字符串,因此这里可能会进行一些不必要的序列化/反序列化。
发布于 2012-12-25 07:26:58
您需要使用JSON.parse()将JSON字符串转换为相应的数据。
var evt = JSON.parse($(data).text());
console.log(evt.meat);jQuery可以自动为您完成此操作。以下任一项:
$.getJSON()执行AJAX调用。dataType: 'json'。https://stackoverflow.com/questions/14026441
复制相似问题