繁体   English   中英

EXT Js同步ajax请求

[英]EXT Js Synchronous ajax request

如何在EXT JS中创建同步ajax请求?

例如,给定此代码:

test1();
ajaxRequest(); //Ajax Request
test2();

执行test2函数时甚至没有完成执行带有Ext.Ajax.request调用的ajaxRequest()

如何在执行ajaxRequest()函数后ajaxRequest()执行text2()

我知道这样做的一种方法是在回调中调用test2函数,但是我有一些依赖项和许多代码必须在ajax请求之后以同步方式执行。 能帮我解决一下这个问题吗?

我需要类似的东西,在查看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属性没有记录,所以......当然......请注意,它可能会在将来的版本中发生变化。

Extjs.Ajax每个AJAX调用都会产生三种类型的回调函数之一:

  • success创建AJAX调用并获得响应时运行的成功
  • failure运行,如果AJAX调用未能得到回应
  • 在AJAX调用获得响应后运行的callback

如果要执行test2(); 在您的ajax请求完成后,
然后将test2函数放在successfailurecallback函数中; 无论你选择哪一个都取决于你......

有关successfailure功能的更多信息,请点击此处

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。

ExtJS不提供开箱即用的同步请求功能。 事实上,他们强烈反对使用它们。

您可能会发现以下讨论很有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM