2017-06-20 144 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時也如此: –