在函数

时间:2015-10-27 07:08:15

标签: javascript ajax

我有一个根据我的监视器类型的值绘制不同弹出窗口的函数。如果我的monitorType = 22我需要发送一个ajax请求,并根据响应继续绘图。但问题是我无法在继续之前得到回应。 这是我职能的一部分:

var str = '<div id="thresholdsHeader" style="display:none;">';
            str += '<div id="alertRule"></div>';
            if(monitorTypeId == 22 ){                   
            var parametrs = {
                    monitorId: module.info.id,
                    typeId: module.info.monitorTypeId
                    };
                sendGetAPIRequest(Framework.customMonitorURL, "getMonitorDynamicMetrics", parametrs, ThresholdManager.getDynamicThresholdsRequest);             
                if(dynResponse.json.length == 0){
                    str += '<input type="button" designstyle="green" onclick="ThresholdManager.addThresholdDialog()" style="float:right;" value="'+Framework.Lang.addThreshold+'"/>';
                }else{
                    str +=  '<input type="button" id="trehsoldsGreenBut" designstyle="green" onclick="ThresholdManager.createThresholds(event)" style="float:right;" value="'+Framework.Lang.addThreshold+'"/><div class="dashboardIcons addNewRuleArrow" style="left: '+(CURRENT_LANGUAGE == 'en'? '460':(CURRENT_LANGUAGE == 'de'?'363':'355'))+'px;top: 8px;"></div>';
                }                   
            }else   {
                    str += '<input type="button" designstyle="green" onclick="ThresholdManager.addThresholdDialog()" style="float:right;" value="'+Framework.Lang.addThreshold+'"/>';
            }
            str += '</div><div id="thresholdContainer"></div>';

这是我的请求处理程序:

 getDynamicThresholdsRequest: function(response){
            dynResponse = response;
     },

如果我通过调试变慢,它可以正常工作。

2 个答案:

答案 0 :(得分:0)

你可以尝试如下: -

  var str = '<div id="thresholdsHeader" style="display:none;">';
            str += '<div id="alertRule"></div>';
            if(monitorTypeId == 22 ){                   
            var parametrs = {
                    monitorId: module.info.id,
                    typeId: module.info.monitorTypeId
                    };
                sendGetAPIRequest(Framework.customMonitorURL, "getMonitorDynamicMetrics", parametrs, ThresholdManager.getDynamicThresholdsRequest);    
           setTimeout( function(){        
                if(dynResponse.json.length == 0){
                    str += '<input type="button" designstyle="green" onclick="ThresholdManager.addThresholdDialog()" style="float:right;" value="'+Framework.Lang.addThreshold+'"/>';
                }else{
                    str +=  '<input type="button" id="trehsoldsGreenBut" designstyle="green" onclick="ThresholdManager.createThresholds(event)" style="float:right;" value="'+Framework.Lang.addThreshold+'"/><div class="dashboardIcons addNewRuleArrow" style="left: '+(CURRENT_LANGUAGE == 'en'? '460':(CURRENT_LANGUAGE == 'de'?'363':'355'))+'px;top: 8px;"></div>';
                }                   
            }else   {
                    str += '<input type="button" designstyle="green" onclick="ThresholdManager.addThresholdDialog()" style="float:right;" value="'+Framework.Lang.addThreshold+'"/>';
            }
            str += '</div><div id="thresholdContainer"></div>';},3000)

使用

  

SetTimeOut功能

并延迟执行。

答案 1 :(得分:0)

你正在使用jquery或类似的东西吗?

如果没有,我建议它重新组织你的代码流程。

PS:我正在对您提供的有限信息进行疯狂尝试。

sendGetAPIRequest(Framework.customMonitorURL, "getMonitorDynamicMetrics", parametrs, ThresholdManager.getDynamicThresholdsRequest, function(resp) {
   //add all the logic to be added on response here
});