[英]jQuery ajax post success - saving data to variable
我有這個功能:
function getReport(name,x) {
var xArr = [];
var yArr = [];
$.ajax({
async: false,
type: "POST",
//async: false,
//dataType: "json",
url: "reportAjax.php",
data: "name="+ name,
success: function(data){
var json = $.parseJSON(data);
var chartDesc = json.INFO.DESC;
$.each(json.RESULT, function(i, object) {
$.each(object, function(property, value) {
//alert(property + "=" + value);
if (property == x) {
xArr.push(value);
}
else {
yArr.push(parseInt(value));
}
});
});
}
});
console.log(xArr);
console.log(yArr);
console.log(chartDesc);
drawChart(xArr,yArr,chartDesc);
}
出於某種原因,我可以在console.log
看到xArr
和yArr
的值,但是我chartDesc is not defined
為chartDesc
chartDesc is not defined
chartDesc
。
如果我將console.log(chartDesc)
行移動到此行下面var chartDesc = json.INFO.DESC
我可以正確地看到它。
這是為什么?
您在AJAX回調函數中聲明了chartDesc
變量,因此它超出了您以后引用它的范圍。
要解決此問題,請從行的開頭刪除var
,然后使用xArr
和yArr
變量將其聲明在函數的頂部:
var xArr = [];
var yArr = [];
var chartDesc = "";
chartDesc
變量范圍與success
函數相關聯,這就是為什么在變量函數之外,變量是undefined
。 在Javascript
函數中為var
定義的變量創建范圍
做你的
console.log(xArr);
console.log(yArr);
在success
功能。 並且在成功函數之外刪除chartDesc
變量,
成功函數外部的控制台日志在調用函數時立即執行,但由於成功函數執行,插入xArr
和yArr
值需要一些時間。 所以你沒有得到任何記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.