English 中文(简体)
ExtJS grab JSON 结果
原标题:
  • 时间:2009-06-03 13:49:55
  •  标签:

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

下面我必须写一下,以便取得这样的结果:

var mymessages = jsonData.options;

而我的话题应当包含一些模棱两可的信息,这是第二个例子信息。

谢谢。

最佳回答

简单明了的办法:

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

或者,你可以通过使用库存的更隐蔽的方式这样做:

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(", "));

虽然我更喜欢用阿雷拉地图(由Ext提供)做:

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

使用success和failure 特性:

Ext.Ajax.request({
    loadMask: true,
    url:  myfile.php ,
    params: {id: "1"},
    success: function(response, callOptions) {
       // Use the response
    },
    failure: function(response, callOptions) {
       // Use the response
    }
});

说明详情

http://jsfiddle.net

例4

如果你确信你的投入是正确的(对Xs攻击的认识),你可以利用电子记录使你的javascript物体从你的json结果中找到,然后可以通过你指挥:

var mymessages = jsonData.options;

但后来又一次。 很幸运的是,正如Rene通过Ext.decode功能指出的。





相关问题
热门标签