私はJSONデータを呼び出し、それに次のように書きます。
var data;
$(function () {
$.getJSON("data.json", function (d) {
data = d;
});
$(".btn").click(function () {
data["c-type"] = $("#c-ccy option:selected").val();
data["f-type"] = $("#f-ccy option:selected").val();
$.ajax({
type: "POST",
url: "save2json.php",
data: {"json": JSON.stringify(data)},
success: function (msg) {
console.log("php output: " + msg);
$.getJSON("data.json", function (d) {
console.log("GET JSON:");
console.log(d);
});
}
})
}); // <<THIS BLOCK OF CODE WORKS FINE AND READS/WRITES THE JSON OBJECT data PERFECTLY WHEN .btn IS CLICKED.>>
console.log(data); // <<ERROR: data undefined>>
})
最後の行のデータ変数にアクセスできないのはなぜですか。
回答:
回答№1は1$ .getJSON()は非同期です。つまり、Javaスクリプトが応答を受け取る前にconsole.logを呼び出すことは頻繁にないので、データがありません。