2013-07-19 25 views
0

我一直在看Sencha Architect的文档和教程,我无法弄清楚。我想要的是有一个按钮将一个值发布到服务器上的PHP脚本,然后从PHP会话变量中检索结果。从我所看到的,我不确定我是否可以根据需要调用PHP,更不用说读取会话变量。调用一个PHP脚本按钮与Sencha建筑师

我意识到这里可能存在一些问题(将按钮连接到控制器/存储,调用脚本,读取结果),但我对建筑师知道他们是否正确还不够了解那些。

编辑:我想我已经把按钮连接到控制器,但我仍然不知道如何让它调用PHP脚本。编辑2: 我添加了一个BasicFunction的按钮,但我不能让它的工作。这里的代码:

// Look up the items stack and get a reference to the first form it finds 
var form = this.up('formpanel'); 
var values = form.getValues().getValues()[0]; 

Ext.Msg.alert('Working', 'Loading...', Ext.emptyfn); 

Ext.Ajax.request({ 
    url: 'http://wereani.ml/shorten-app.php', 
    method: 'POST', 
    params: { 
     url: values 
    }, 
    success: function(response) { 
     Ext.Msg.alert('Link Shortened', Ext.JSON.decode(response).toString(), function() { 
      form.reset(); 
     }); 
    }, 
    failure: function(response) { 
     Ext.Msg.alert('Error', Ext.JSON.decode(response).toString(), function() { 
      form.reset(); 
     }); 
    } 
}); 

此外,是从字段(itemID:url)获取值的正确方法?关于Touch的文档中找不到任何内容。

回答

1

在侦听器中为按钮使用Ext.Ajax请求。 docs.sencha.com/touch/2.2.1/?mobile=/api/Ext.Ajax。

这里的文档非常简单。如果你有麻烦,请发布一些细节,我会尽力给你写一个例子。

祝你好运,布拉德

+0

Ajax请求必须在同一个域,它似乎,但它并没有说哪个域是。这是否意味着它需要对设备进行本地请求,并且我应该使用JsonP,还是不重要? – Techwolf

+0

可以使用Chrome禁用安全性进行测试(stackoverflow.com/questions/3102819/chrome-disable-same-origin-policy)或使用jsonp而不是json。当应用在设备上运行时,您不需要担心跨源策略。我会推荐使用jsonp,因为我不这样做,并且有几次想要在浏览器中为客户端演示产品,但由于需要跳过以禁用相同的源策略,所以无法使用jsonp。 – bwags

+0

感谢您的帮助!我不确定我做错了什么,但JsonP请求现在正在工作,除了我打电话的PHP脚本中有一个小错误。 – Techwolf