无法连接html

时间:2019-07-14 20:49:11

标签: javascript ajax extjs

“我正在尝试制作一个console.log(env.BASE_URI) ,成功了。但是,当我尝试打印响应时,它不会将“成功”或“失败:带有“初始值”的字符串”连接起来

它打印中间值,并且,如果我将Ajax call放在成功或失败中,它也会打印值。在Ajax调用之外无法正常工作

console.log

预期为-loadData : function(groupRID, serviceName) { var html = 'initial value'; var params = { codeGroupRid : groupRID, outputFormat : 'json' }; html +=' middle' Util.Functions.eAjax(serviceName, params, { success : function(response) { html += ' Success'; return html; }, failure : function(errMsg) { html += ' Failure'; return html; } }); },

实际是-initial value middle Success

2 个答案:

答案 0 :(得分:0)

从成功和失败回调中删除return html;部分,因为ajax是异步的。如果您在回调中使用return,则它会在获得响应之前返回。

答案 1 :(得分:0)

如@Gokul Raj K.N.说-默认情况下,Ajax是异步方法。所以:

推荐的解决方案:

您应将function参数添加到loadData方法中,方法可如下:

loadData(groupRID, serviceName, function (result) {
    let loaded_data = result;
    // do something with loaded data
});

使用loadData的{​​{1}}方法:

callback

不推荐的解决方案:

您可以轻松更改loadData : function(groupRID, serviceName, callback) { var html = 'initial value'; var params = { codeGroupRid : groupRID, outputFormat : 'json' }; html +=' middle' Util.Functions.eAjax(serviceName, params, { async: false, success : function(response) { html += ' Success'; callback(html); }, failure : function(errMsg) { html += ' Failure'; callback(html); } }); }, 参数以使其同步。

  

true (如果此请求应异步运行)。通常应避免将其设置为 false ,因为这将导致UI被阻止,因此用户将无法与浏览器进行交互,直到请求完成为止。   默认值为: true

async