无法在javascript中获取声明的变量值
无法从getJSON范围外获取类值。内部声明的警报显示值,但外部不显示值无法在javascript中获取声明的变量值,javascript,Javascript,无法从getJSON范围外获取类值。内部声明的警报显示值,但外部不显示值 // Getting classes based on classID var ClassID = {"ClassID": item.ClassId}; var Class=""; $.getJSON('@Url.Action("GetClassesByID","Catalogue
// 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和回调的工作方式 这就是您期望发生的情况:
回调中的原因基本上只是$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调用。它是异步的,这意味着它将在警报发出后返回,因此您需要一个回调函数。如果这对您有所帮助,请选中答案左侧的复选标记:DClass=Val代码>在警报(“外部值”+类)后执行代码>,换句话说getJSON
是异步的。范围是正确的,但执行顺序与您在此处预期的不同。Class=Val代码>在警报(“外部值”+类)后执行代码>,换句话说getJSON
是异步的。范围是正确的,但执行顺序与您在此处预期的不同。