首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ExtJS grab JSON结果

ExtJS grab JSON结果
EN

Stack Overflow用户
提问于 2009-06-03 13:49:56
回答 3查看 44.9K关注 0票数 17

我正在从PHP生成JSON响应,它看起来像这样:

代码语言:javascript
复制
{ done:'1', options: [{ message:'Example message'},{message:'This is the 2nd example message'}]}

我想用ExtJS获取这些结果。这就是我到目前为止所知道的:

代码语言:javascript
复制
Ext.Ajax.request({
    loadMask: true,
    url: 'myfile.php',
    params: {id: "1"}
});

接下来我要写什么才能得到这样的json结果:

代码语言:javascript
复制
var mymessages = jsonData.options;

并且mymessages应该包含示例消息,这是第二个示例消息。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-03 13:56:48

简单的方法:

代码语言:javascript
复制
Ext.Ajax.request({
  loadMask: true,
  url: 'myfile.php',
  params: {id: "1"},
  success: function(resp) {
    // resp is the XmlHttpRequest object
    var options = Ext.decode(resp.responseText).options;

    Ext.each(options, function(op) {
      alert(op.message);
    }
  }
});

或者,您可以使用Store以一种更具Ext风格的方式来实现:

代码语言:javascript
复制
var messages = new Ext.data.JsonStore({
  url: 'myfile.php',
  root: 'options',
  fields: [
    {name: 'text', mapping: 'message'}
  ],
  listeners: {
    load: messagesLoaded
  }
});
messages.load({params: {id: "1"}});

// and when loaded, you can take advantage of
// all the possibilities provided by Store
function messagesLoaded(messages) {
  messages.each(function(msg){
    alert(msg.get("text"));
  });
}

再举一个例子来说明最后一条评论:

代码语言:javascript
复制
var messages = [{title: "1"},{title: "2"},{title: "3"}];

var titles = msg;
Ext.each(messages, function(msg){
  titles.push(msg.title);
});
alert(titles.join(", "));

虽然我更喜欢使用Array.map (Ext没有提供):

代码语言:javascript
复制
var text = messages.map(function(msg){
  return msg.title;
}).join(", ");
alert(text);
票数 35
EN

Stack Overflow用户

发布于 2012-06-12 19:02:57

检查这个样例小提琴,它用于ExtJS4. http://jsfiddle.net/mrigess/e3StR/

Ext4以后使用Ext.JSON.encode()Ext.JSON.decode();而Ext3使用Ext.util.JSON.encode()Ext.util.JSON.decode()

票数 2
EN

Stack Overflow用户

发布于 2009-06-03 14:15:55

如果您确定您的输入是正确的(注意xss攻击),您可以使用eval()函数从您的json结果创建javascript对象,然后可以通过您的命令访问该对象:

代码语言:javascript
复制
var mymessages = jsonData.options;

但话又说回来,Ext为您做得很好,正如Rene通过Ext.decode函数指出的那样

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/944871

复制
相关文章

相似问题

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