ajax未在声明的变量上设置值

时间:2018-11-28 04:10:15

标签: javascript jquery ajax asp.net-mvc razor

我对此JavaScript函数有疑问。我正在尝试做的是,使用ajax调用查找特定的“材料描述”。当我尝试console.log ajax函数时,将显示数据。但是,当我设置为数组时,它不会设置数组值并被跳过。使用“异步:假”给我这个警告:

  

不赞成在主线程上使用同步XMLHttpRequest,因为它会对最终用户的体验产生不利影响。

没有异步将给我未定义的结果。

KstestResult(statistic=nan, pvalue=nan)

谢谢,谢谢。

1 个答案:

答案 0 :(得分:1)

您需要提供一个回调函数,该函数将在ajax调用完成后执行:

function setMatDesc(MatID, calback) {
        var result
        $.ajax({
            url: '@Url.Action("Get_MatDesc")',
            type: 'GET',
            async: false,
            data: { MatID: MatID },
            success: function (data) {
                callback(data); // note this
            },
            error: function (xhr) {
                alert('error');
            }
        });
}

在通话结束时就像:

setMatDesc(splitted[0],function(result) {

    splitted = result;
    splitted[arrayCnt + 1];
    splitted[arrayCnt + 1] = currentDate;

});

代码可能无法正常工作,因为我尚未测试过,但这是从执行ajax调用的函数返回数据的方法,因为ajax调用是异步执行的,并且该函数在ajax调用从服务器完成返回之前执行主体。