Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在javascript中获取声明的变量值_Javascript - Fatal编程技术网

无法在javascript中获取声明的变量值

无法在javascript中获取声明的变量值,javascript,Javascript,无法从getJSON范围外获取类值。内部声明的警报显示值,但外部不显示值 // Getting classes based on classID var ClassID = {"ClassID": item.ClassId}; var Class=""; $.getJSON('@Url.Action("GetClassesByID","Catalogue

无法从getJSON范围外获取类值。内部声明的警报显示值,但外部不显示值

// Getting classes based on classID
                        var ClassID = {"ClassID": item.ClassId};
                        var Class="";
                        $.getJSON('@Url.Action("GetClassesByID","Catalogue")', ClassID, function (Val) {
                            Class=Val;
                           alert("Inside Value " +Class);
                        });

html= html+'<div class="col-xs-7 col-sm-7 col-md-7 dvpadding isbnnum"><p><b>CLASS - ('+Class+')</b></p></div>';
//基于classID获取类
var ClassID={“ClassID”:item.ClassID};
var Class=”;
$.getJSON('@Url.Action(“GetClassesByID”,“catalog”)),ClassID,函数(Val){
Class=Val;
警报(“内部值”+等级);
});
html=html+'CLASS-('+CLASS+')

';

我只想根据从ajax调用中获得的值更新上面html中提到的类:我完全误读了范围。抱歉。

编辑:我完全误读了范围。抱歉。

.getJSON是异步的。您正在调用它之外的警报,这是同步的。您需要调用一次函数。getJson是成功的,如下所示:

// Getting classes based on classID
var ClassID = {
  "ClassID": item.ClassId
};
var Class = "";
$.getJSON('@Url.Action("GetClassesByID","Catalogue")', ClassID, logData(val));

function logData(val) {
  Class = Val;
  alert("Outside Value " + Class);
}

.getJSON是异步的。您正在调用它之外的警报,这是同步的。您需要调用一次函数。getJson是成功的,如下所示:

// Getting classes based on classID
var ClassID = {
  "ClassID": item.ClassId
};
var Class = "";
$.getJSON('@Url.Action("GetClassesByID","Catalogue")', ClassID, logData(val));

function logData(val) {
  Class = Val;
  alert("Outside Value " + Class);
}

获取空字符串的原因是javascript和回调的工作方式

这就是您期望发生的情况:

  • class=“”
  • $getJSON
  • Class=val
  • 警报(类)
  • 这就是正在发生的事情:

  • class=“”
  • $getJSON
  • 警报(类)
  • Class=val
  • “Class=val”存在于
    回调中的原因基本上只是$getJSON完成后应该发生的操作

    但是,由于$getJSON可能需要几秒钟,因此低于$getJSON的内容将首先运行


    您可以将$getJSON视为发生的赋值。该行代码的执行速度非常快,与任何其他行代码的执行速度一样快。但由于您提供了回调,因此该行的回调部分只会在实际获取JSON后执行,而JSON可以在任何时候执行。

    获取空字符串的原因是javascript和回调工作方式的原因

    这就是您期望发生的情况:

  • class=“”
  • $getJSON
  • Class=val
  • 警报(类)
  • 这就是正在发生的事情:

  • class=“”
  • $getJSON
  • 警报(类)
  • Class=val
  • “Class=val”存在于
    回调中的原因基本上只是$getJSON完成后应该发生的操作

    但是,由于$getJSON可能需要几秒钟,因此低于$getJSON的内容将首先运行


    您可以将$getJSON视为发生的赋值。这一行代码的执行速度非常快,与其他任何一行代码一样快。但是因为您提供了回调,所以只有在实际获取JSON后才执行该行的回调部分,而JSON可以在任何时候执行

    它在正确的范围内,但预期值设置为AsynchronousLY它在正确的范围内,但预期值设置为AsynchronousLY我已全局声明了它。是的,它是全局声明的,但该.getJSON函数会在需要时返回数据,因为它是一个ajax调用。它是异步的,这意味着它将在警报发出后返回,因此您需要一个回调函数。如果这对您有所帮助,请选中答案左侧的复选标记:DI已全局声明了它。是的,它是全局声明的,但是。getJSON函数会在需要时返回数据,因为它是一个ajax调用。它是异步的,这意味着它将在警报发出后返回,因此您需要一个回调函数。如果这对您有所帮助,请选中答案左侧的复选标记:D
    Class=Val
    警报(“外部值”+类)后执行,换句话说
    getJSON
    是异步的。范围是正确的,但执行顺序与您在此处预期的不同。
    Class=Val
    警报(“外部值”+类)后执行,换句话说
    getJSON
    是异步的。范围是正确的,但执行顺序与您在此处预期的不同。