如何在EXT JS中进行同步ajax请求?
例如,给定以下代码:
test1();
ajaxRequest(); //Ajax Request
test2();test2函数在没有完成ajaxRequest()的执行的情况下就被执行了,它有一个Ext.Ajax.request调用。
如何才能使text2()仅在ajaxRequest()函数执行后执行?
我知道一种方法是在回调中调用test2函数,但我有一些依赖项和大量代码,必须在ajax请求之后以同步方式执行。你能帮我找出最好的解决方案吗?
发布于 2013-01-06 13:45:12
我需要一些类似的东西,在查看了Ext.Ajax.request()和Ext.data.Connection的源代码后,我发现它们在request()方法上检查async属性,因此,实际上可以发出一个同步请求,如下所示:
var response = Ext.Ajax.request({
async: false,
url: 'service/url'
});
var items = Ext.decode(response.responseText);这个async属性似乎没有文档记录,所以...当然..。请注意,它可能会在未来的版本中发生变化。
发布于 2011-06-04 11:40:29
在Extjs.Ajax中,每次AJAX调用都会导致以下三种回调函数之一:
成功创建AJAX调用时运行的
success,并获取响应failure,该响应callback在AJAX调用获取响应后运行
如果希望在ajax请求完成后执行test2();,
然后将您的test2函数放在success、failure或callback函数中;无论您选择哪一个函数,都取决于您……
有关success或failure函数的更多信息,请访问here。
test1();
Ext.Ajax.request({
url: 'page.php',
params: {
id: 1
},
// scope: this, // you can set the scope too
callback: function(opt,success,respon){
test2();
}
});注意:此方法不适用于ExtJS 3。
发布于 2011-06-04 06:04:02
ExtJS不提供开箱即用的同步请求功能。事实上,他们强烈反对使用它们。
您可能会发现有关following的讨论很有帮助。
https://stackoverflow.com/questions/6233071
复制相似问题