0

下面您将看到一些代码来设置 extjs 4 应用程序的当前登录用户。如果我未注释警报,则代码似乎要等到警报被接受后,代码才会继续(似乎)。这为异步调用成功完成提供了足够的时间。如果我注释掉警报,变量“employeeFilter”永远不会被设置,因为 AJAX 调用没有及时返回。在这种情况下,它将“employeeFilter”设置为 null。我该如何解决这个问题,让它等到 AJAX 响应成功返回?

var loggedInUserId = null;
Ext.Ajax.request({
    url: '/Controls/UserList/UserService.asmx/GetLoggedInUserId',
    method: 'POST',
    jsonData: { 'x': 'x' },
    success: function (response, opt) {
        loggedInUserId = Ext.decode(response.responseText).d;
    },
    failure: function (response) {
    }
});

//alert(loggedInUserId);
var employeeFilter = loggedInUserId;
var projectFilter = '-1';
4

1 回答 1

2

我会这样做的。

var employeeFilter;        
Ext.Ajax.request({
    url: '/Controls/UserList/UserService.asmx/GetLoggedInUserId',
    method: 'POST',
    jsonData: { 'x': 'x' },
    success: function (response, opt) {
        employeeFilter = Ext.decode(response.responseText).d;
        //Do here whatever you need to do once the employeeFilter is set. probably call a function and pass the employee filter as parameter. 
    },
    failure: function (response) {
    }
});

var projectFilter = '-1';
于 2012-10-10T00:10:05.147 回答