2017-06-20 9 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"} 

その後、私はしています

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が外側スコープに設定されます。

これは部分的にあなたの問題を解決します。もう1つの問題は、外部コードが同期的に実行される一方で、コールバックコードは外部コードが終了した後のいつか非同期に実行されることです。これは、次の行を意味します。

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

合計値がURLから読み取られる前に実行されます。おそらく最も簡単なことは、そのコードをコールバックに移動することです。つまり、

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

いいえ、この質問は私がコメントしたものと重複しています。 –

+0

おそらく、私が答えたときに複製をマークしていなかったのですが、彼の合計が未定義の理由でもあります。 –

+0

@JulianGoacherまだ未定義に戻っています。 varを削除する場合でも: –

関連する問題