Ext JS中如何通过URL接口为变量赋值(类似Store加载方式)
实现方法:直接获取Services接口返回值
嘿,我懂你的需求——之前靠配置Store Proxy的URL来加载数据,现在想直接让变量x拿到指定Services接口返回的内容对吧?在ExtJS里可以用内置的AJAX工具来实现,下面给你两种常用方式:
1. 异步请求(推荐,不阻塞UI)
这是最常用的方式,因为异步请求不会卡住浏览器界面。你需要在请求的success回调里处理返回值:
let x; Ext.Ajax.request({ url: 'Services/..../...', // 替换成你的实际服务地址 method: 'GET', // 根据接口要求用GET/POST/PUT等 success: function(response) { // 解析JSON格式的响应(如果返回的是纯文本,直接用response.responseText即可) x = Ext.decode(response.responseText); // 注意:异步请求的结果只能在回调里直接使用,外部直接访问x可能还是undefined console.log('成功获取的值:', x); // 这里可以写你需要用x执行的逻辑 }, failure: function(response) { console.error('请求失败,状态码:', response.status); // 处理请求失败的情况,比如提示用户 } });
2. 同步请求(不推荐,仅特殊场景使用)
如果你必须让请求完成后再继续执行后续代码,可以开启同步模式,但这会阻塞浏览器UI,影响用户体验:
let x; Ext.Ajax.request({ url: 'Services/..../...', method: 'GET', async: false, // 开启同步模式 success: function(response) { x = Ext.decode(response.responseText); }, failure: function(response) { console.error('请求失败', response); } }); // 同步模式下,这里可以直接访问x console.log('同步获取的值:', x);
小提示
- 如果你的Services返回的是XML或者纯文本,不用
Ext.decode,直接使用response.responseText或response.responseXML即可。 - 优先使用异步请求,同步请求可能导致页面假死,除非有特别必要的场景。
内容的提问来源于stack exchange,提问作者HariPrasad kasavajjala
相关产品推荐
相关产品推荐

