我试图在jsonGet方法中调用成功回调函数,并尝试在JsonGet方法之外访问变量“size”和“noOfFiles”,但它在jsonGet方法之外显示未定义。
我正在使用以下代码
(function()
{
/**
* Alfresco Slingshot aliases
*/
var $html = Alfresco.util.encodeHTML,
$isValueSet = Alfresco.util.isValueSet;
var $html5 = Alfresco.util.encodeHTML,
$isValueSet = Alfresco.util.isValueSet;
if (Alfresco.DocumentList)
{ YAHOO.Bubbling.fire("registerRenderer",
{
propertyName: "FolderInfo",
renderer: function type_renderer(record)
{
var jsNode = record.jsNode;
var nodeRef = jsNode.nodeRef;
var size, noOfFiles;
console.log(size);
console.log(Alfresco.constants.PROXY_URI + "com/acme/nodesize/node-size.json?nodeRef=" + nodeRef);
/*Alfresco.util.Ajax.jsonGet({*/
$.ajax({
url: encodeURI(Alfresco.constants.PROXY_URI + 'com/acme/nodesize/node-size.json?nodeRef='+nodeRef),
async: false,
successCallback:
{
fn: function loadWebscript_successCallback(response, config)
{
var obj = JSON.parse(response.serverResponse.responseText);
if (obj)
{
console.log("AJAX calls works. Printing the folder size " + obj.size + " & no of files " + obj.noOfFiles);
size = obj.size;
noOfFiles = obj.noOfFiles;
alert(size);
console.log("inside success call back function");
}
},
/*scope: this*/
},
/*scope: this*/
});
console.log("Size"+size);
html5 = '<span class="item">' + "Folder Size: " + '<b>' + size + '</b>' + '</span>';
return html5;
}
});
}
})();
但是在网上搜索之后,我了解到jsonGet是异步的,所以在同步代码之后它是优秀的。所以,我用$ .ajax方法替换了jsonGet方法,并将async设置为false以使$ .ajax同步并且访问jsonGet方法之外的变量。但是,变量“size”仍未定义。
任何帮助都会非常感激。我很多天都在努力