JavaScript返回空值

时间:2019-02-17 09:36:30

标签: javascript

我有JavaScript执行ajax,如下所示

function format(ID) {
    //alert(d);
    var _row_Detail = '';
    $.ajax({
        url: '@Url.Action("Select_Detail")',
        data: { iID: ID},

        success: function (data) {

            $.each(data, function (i, items) {

                _row_Detail +=
                '<tr>' +
                    '<td class="col-md-1" valign="top"><b>Month</b></td>' +
                    '<td>' + items.month_Name + '</td > ' +
                '</tr>' +
                '<tr>' +
                    '<td></td>' +
                    '<td valign="top">' +
                        '<table cellpadding="5" valign="top" cellspacing="0" border="0" style="padding-left:350px;">' +
                        '<tr>' +
                            '<td class="col-md-2" valign="top"> <b>Monthly Desc </b></td>' +
                            '<td>' + items.monthly_Desc + '</td>' +
                        '</tr>' +
                        '<tr >' +
                            '<th>Parameter</th>' +
                            '<th style="text-align:center">Note</th>' +
                        '</tr>' +
                        '<tr>' +
                            '<td class="col-md-2" valign="top"><b>Param 1</b></td>' +
                            '<td><b>' + items.param_1 + '</b>, ' + items.desc_1 + '</td>' +
                        '</tr>' +
                        '</table>' +
                    '</td > ' +
                '</tr>'

            });

            _row_Detail = '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:150px;">' + _row_Detail + '</table>'
        }

        });

//alert (_row_Detail);
return _row_Detail 
}

上面的代码在返回值之前都可以正常工作。返回的“ _row_Detail ”始终为空。我不知道为什么?但是,当我在网络监视器(Firefox,调试模式)中签入时,查询总是从ajax返回值。无论是单行还是多行。

我尝试通过在警报处设置断点来确定' _row_Detail '的值为 no ,但返回值为<< strong> _row_Detail 。 / p>

但是,当警报变为命令时,它将显示空白弹出窗口,但返回值没有这些值。我认为,这是因为ajax执行后,在循环中缺少对' _row_detail '变量的赋值。

然后,我尝试进行一些延迟,并在没有警报的情况下发送值控制台。

    console.log('console 1:' +_row_Detail);
    console.log('console 2:' + _row_Detail);
    setTimeout(DelayMe(), 1000);  //empty function
    console.log('console 3:' + _row_Detail);
    console.log('console 4:' + _row_Detail);
    setTimeout(DelayMe(), 1000);  //empty function
    console.log('console 5:' + _row_Detail);
    console.log('console 6:' + _row_Detail);

但控制台为空,并返回' _row_Detail '为空。

到目前为止,我只能通过在返回“ _row_Detail ”之前给出警告弹出窗口来解决上述空返回值。虽然为空,但是返回函数具有价值。

为什么会这样?

0 个答案:

没有答案