web-dev-qa-db-ja.com

jsonを変数にロードします

私は非常に単純なことをしなければなりませんが、私が知る限り、これを行う簡単な方法はないようです。リモートソースからJSONデータをロードし、jQueryを使用してグローバルJavascript変数に格納するだけです。ここに私が持っているものがあります:

var my_json;
$.getJSON(my_url, function(json) {
  var my_json = json;
});

My_json変数は未定義のままです。これは明らかにスコープの問題だと思います。 $ .getJSONメソッドはJSONを返すはずですが、XMLHttpRequestオブジェクトを返します。これを行う場合:

request = $.getJSON(my_url);
my_json = request.responseText.evalJSON();

Readystate == 4になるまでresponsetextがnullのままになるため、これは機能しません。成功すると起動するため、応答テキストを返すにはコールバック関数を使用する必要があるようです。

これは難しいことはできません!右?

48
Aaron

これはそれを行います:

var json = (function () {
    var json = null;
    $.ajax({
        'async': false,
        'global': false,
        'url': my_url,
        'dataType': "json",
        'success': function (data) {
            json = data;
        }
    });
    return json;
})(); 

主な問題は$.getJSONが非同期で実行されるため、Javascriptはsuccessコールバックが起動する前でもそれを呼び出す式を通過するため、変数がデータをキャプチャする保証はありません。

特に、上記のajax呼び出しの'async': falseオプションに注意してください。 manual の意味:

デフォルトでは、すべてのリクエストは非同期で送信されます(つまり、これはデフォルトでtrueに設定されています)。同期要求が必要な場合は、このオプションをfalseに設定します。同期リクエストは一時的にブラウザをロックし、リクエストがアクティブな間はアクションを無効にすることに注意してください。

123
karim79

コードビットは次のようになります。

var my_json;
$.getJSON(my_url, function(json) {
  my_json = json;
});
28
CountZero
var itens = null;
$.getJSON("yourfile.json", function(data) {
  itens = data;
  itens.forEach(function(item) {
    console.log(item);
  });
});
console.log(itens);
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
</head>
<body>
</body>
</html>
0
Rodrigo Slompo
  • これにより、JavaScript変数の外部でJSONファイルが取得されます。
  • これで、このsample_dataにはJSONファイルの値が含まれます。

    var sample_data = ''; $.getJSON("sample.json", function (data) { sample_data = data; $.each(data, function (key, value) { console.log(sample_data);

0
Noel Sasikanth
<input  class="pull-right" id="currSpecID" name="currSpecID" value="">

   $.get("http://localhost:8080/HIS_API/rest/MriSpecimen/getMaxSpecimenID", function(data, status){
       alert("Data: " + data + "\nStatus: " + status);
    $("#currSpecID").val(data);
    });

enter image description hereenter image description here

0
MAFAIZ