2017-06-20 141 views
0

我试图从一个PHP脚本,看起来像访问一个JSON对象:PHP + jQuery的的getJSON返回 “未定义”

$results = array(
    'total' => $all_totalf, 
    'error' => $all_errorsf, 
); 
echo json_encode($results); 

JSON对象看起来像:

{"total":"11,644","error":"179"} 

然后,我有一个像下面这样的jQuery脚本:

var url = "get_control_data.php"; 
var total; 
$.getJSON(url, function (data) { 
var total = data.total; 
}); 
document.getElementById("total").innerHTML = total; 

我被卡住了,因为总被返回为“未定义”。有谁知道我做错了什么?

回答

1

的问题是在这条线在回调的getJSON:

var total = data.total; 

var这里声明了一个名为total新的变量,它的作用范围仅回调函数。删除var,您的代码将设置外部作用域中的total var。

这只会部分解决您的问题。另一个问题是外部代码同步执行,而回调代码将在外部代码完成后的某个时间异步执行。这意味着该行:

document.getElementById("total").innerHTML = total; 

在从URL中读取总值之前运行。可能最简单的做法就是将该代码移入回调中,即:

$.getJSON(url, function (data) { 
    document.getElementById("total").innerHTML = data.total; 
}); 
+0

不是。此问题与我评论的内容相同。 –

+0

也许是这样 - 我在回答时没有标记重复 - 但这也是他的总数未定义的原因。 –

+0

@JulianGoacher它仍然回来未定义。即使在删除var时也如此: –