javascript - ExtJS 抓取 JSON 结果

标签 javascript php json extjs

我正在从 PHP 女巫生成 JSON 响应,如下所示:

{ done:'1', options: [{ message:'Example message'},{message:'This is the 2nd example message'}]}

我想使用 ExtJS 获取这些结果。这是我目前所拥有的:

Ext.Ajax.request({
    loadMask: true,
    url: 'myfile.php',
    params: {id: "1"}
});

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

var mymessages = jsonData.options;

mymessages 应包含示例消息,这是第二条示例消息。

谢谢。

最佳答案

直接的方法:

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-ish 的方式做到这一点:

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"));
  });
}

再举一个例子来解决最后一条评论:

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 不提供):

var text = messages.map(function(msg){
  return msg.title;
}).join(", ");
alert(text);

关于javascript - ExtJS 抓取 JSON 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/944871/

相关文章:

javascript - 使用第 3 方 Oauth 提供商对 API 的用户进行身份验证

javascript - Angular6 中编辑表单的预选选项(下拉菜单)

javascript - 如何使用onchange事件?

php - 从 dhtmlx 调度程序中删除 block 区域

javascript - 如何在MVC中将大量数据从AJAX发送到 Controller ?

javascript - 如何查找字符串是否包含两个冒号之间的单词,然后返回包括冒号的结果

c# - 将 typeahead.js 与 jquery ajax 调用一起使用

php - mysql日期显示结果今天/昨天/周

PHP:文件到数组检查和替换

java - Grails 应用程序,可以从 Java DAO 服务访问数据库 - 如何访问 Controller 中的服务?