无法将类值取出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>';
我只想从ajax调用
获取的值更新上面html中提到的类答案 0 :(得分:3)
.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);
}
答案 1 :(得分:1)
你得到一个空字符串的原因是因为javascript和回调的工作方式。
这是您期望发生的事情:
这就是发生的事情:
'Class = val'的原因在于callback
,这基本上只是一个应该在$ getJSON完成后发生的动作。
然而,由于$ getJSON可能需要几秒钟,因此将首先运行$ getJSON以下的任何内容。
您可以将$ getJSON视为发生的分配。这行代码将非常快速地执行,与任何其他代码行一样快。但是因为你提供了一个回调,所以只有在实际获取JSON时才会执行该行的回调部分,这可能是在任何时候。
答案 2 :(得分:0)
编辑:我完全误读了范围。遗憾。