EXT Js同步ajax请求

Jem*_*rld 13 javascript ajax extjs function

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

例如,给定此代码:

test1();
ajaxRequest(); //Ajax Request
test2();
Run Code Online (Sandbox Code Playgroud)

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

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

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

Red*_*der 27

我需要类似的东西和看的源代码后Ext.Ajax.request()Ext.data.Connection,我发现他们检查一个async属性上request()的方法,所以,它实际上是可以进行同步请求,就像这样:

var response = Ext.Ajax.request({
    async: false,
    url: 'service/url'
});
var items = Ext.decode(response.responseText);
Run Code Online (Sandbox Code Playgroud)

看来这个async属性没有记录,所以......当然......请注意,它可能会在将来的版本中发生变化.

  • 现在,在5.0版本中为Ext.Ajax.request记录了async属性.请参阅docs.sencha.com/extjs/5.0/apidocs/#!/api/Ext.Ajax (2认同)

Egy*_*din 11

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

  • success 如果AJAX调用成功创建并获得响应,则运行
  • failure 如果AJAX调用无法获得响应,则运行
  • callback 在AJAX调用获得响应后运行

如果要执行test2();您的Ajax请求完成后,
然后把你的test2函数的内部success,failurecallback功能; 无论你选择哪一个都取决于你......

关于更多信息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();
    } 
});
Run Code Online (Sandbox Code Playgroud)

注意:此方法不适用于ExtJS 3.