如何将ajax请求放入sencha touch中的变量中?

Posted

技术标签:

【中文标题】如何将ajax请求放入sencha touch中的变量中?【英文标题】:How to get ajax request into a variable in sencha touch? 【发布时间】:2011-06-21 16:01:39 【问题描述】:

我想要做的是获取我在 ajax 请求中的信息作为徽章文本编号

这是我想要做的。这似乎很简单,但我无法弄清楚。

    Ext.Ajax.request(
      url: '../lib/messages.php',
      success: function(response, opts) 
      var badge_number = Ext.decode(response.responseText);
      console.dir(badge_number);
,
    failure: function(response, opts) 
    console.log('server-side failure with status code');

);

     var buttonsGroup1 = [
      text: 'Messages',
      //badge_number variable from ajax request would go here. badgeText: '2',
      handler: tapHandler
    ]; 

【问题讨论】:

这里没什么好说的了。 PHP 脚本的响应是什么?我会打开页面并使用 JS 调试工具在 Chrome/Safari 中对其进行测试。它将允许您查看服务器响应的内容,并检查成功函数中的状态。 @mistagrooves 我只是让 php 脚本返回一个数字。服务器响应良好,成功功能可以检索数据。但我希望成功函数从 php 脚本中获取的数据是 badgeText。我的问题是我不知道如何将该数据放入变量buttonsGroup1中的badgeText 嘿,请通过***.com/questions/9563417/… 并给出您宝贵的回复... 【参考方案1】:

啊,好吧,我看错了问题。

因此,将徽章文本放在按钮上最直接的方法是创建一个closure。

var button = new Ext.Button(
  text: 'Messages',
  handler: tapHandler);

Ext.Ajax.request(
  ....
  success: function(response, opts)
     button.setBadge(Ext.decode(response.responseText));
  
  ...
);

这将导致在 AJAX 调用完成时更新标记文本。然后,您可以像以前一样在 AJAX 请求代码之后将对象添加到面板或工具栏。

如果在创建按钮之前绝对必须在按钮上添加标记文本,则需要在成功函数内创建按钮组并将其分配/添加到适当的容器对象。

【讨论】:

效果很好。只是出于好奇,如果我要更新面板或其他任何东西,也会使用相同的方法。 @Alex 是的,你也可以用同样的方式来做。您还可以在其他方法中找到对需要更新的组件的引用,例如 Ext.getCmp("id") 或 this.items.getAt(n)。这真的取决于情况。 嘿,请通过***.com/questions/9563417/… 并给出您宝贵的回复...

以上是关于如何将ajax请求放入sencha touch中的变量中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Sencha Touch Ajax 请求中发现 302 响应

Sencha Touch 中的 POST 请求

在 sencha touch 2 中加载外部 url

在 Sencha Touch 2 中更改选项卡时发出 Ajax 请求

Sencha Touch 2.0 进度指示器

从 localStorage 获取值以在 Sencha Touch AJAX 代理中使用