获取JSON并根据ID保存为Variable

时间:2014-11-19 16:05:12

标签: jquery json

我得到了以下JSON示例。 现在我希望如果我输入网址:http://url.de#1234,那就是kunde的所有内容 - > 1234写入变量。怎么办呢?

JSON:

{
"kunde": {
    "1234": [{
        "gender": "male",
        "firstname": "Karl-Heinz",

    }],

    "3214": [{
        "gender": "female",
        "firstname": "Annette-Heinz",

    }],

    "5845": [{
        "gender": "male",
        "firstname": "Anton-Heinz",

    }]
  }
}    

JSFIDDLE到JS和HTML:http://jsfiddle.net/7atLe66g/

更新

这确实有效,但不是HASH Grabber并插入JSON函数。 为什么不呢?

var url = window.location.href, idx = url.indexOf("#");
var hash = idx != -1 ? url.substring(idx+1) : "";

var json_url = "http://localhost/test/beispiel.json";
$.getJSON(json_url, function (data) {

    var t = data.kunde[hash][0];
    alert(t.gender + "  " + t.firstname);

});

4 个答案:

答案 0 :(得分:1)

如果您遍历子对象并且不确定它们是否存在,则可以使用hasOwnProperty方法。那你就不会收到错误。而且一些错误处理也会很好。在您的ajax请求中,您可以指定错误函数并捕获不需要的副作用,或者将其包装在try-catch块中。但是当应用程序准备就绪时,它应该没有错误。

即G。 if(data.kunde.hasOwnProperty(" 1234"))..

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty

<script>
    var data = {
        "kunde": {
            "1234": [{
                "gender": "male",
                "firstname": "Karl-Heinz",
            }],

            "3214": [{
                "gender": "female",
                "firstname": "Annette-Heinz",
            }],

            "5845": [{
                "gender": "male",
                "firstname": "Anton-Heinz",
            }]
        }
    };


    window.onload = function() {

        var t = data.kunde["1234"][0]; 
        alert(t.gender + "  " + t.firstname); 

    }; 


</script>

答案 1 :(得分:1)

$.ajax({ 
                type: 'GET', 
                url: ' http://url.de', 
                data: { id: '1234' }, 
                dataType:'json',
                success: function (data) { 
                       console.log(data)
                }
            });

$.ajax({ 
                    type: 'GET', 
                    url: ' http://url.de',
                    dataType:'json',
                    success: function (data) { 
                           var t = data.kunde["1234"][0]; 
                           alert(t.gender + "  " + t.firstname); 
                    }
                });

答案 2 :(得分:0)

解决问题的关键是使用方括号。 json['kunde']json.kunde相同。所以你可以这样做并使用哈希变量,就像在json.kunde[hash]中一样,如果hash = 1234等,它将有效地访问json.kunde.1234(尽管使用以数字开头的字段在点表示法中是非法的)。如果这有意义或者您有任何问题,请告诉我。

答案 3 :(得分:0)

试试这个

  var jD = {
  "kunde": {
"1234": [{
    "gender": "male",
    "firstname": "Karl-Heinz",

}],

"3214": [{
    "gender": "female",
    "firstname": "Annette-Heinz",

}],

"5845": [{
    "gender": "male",
    "firstname": "Anton-Heinz",

      }]
    }
  }  
  var hashCode = window.location.hash.substr(1);
var gender = jD.kunde[hashCode][0]['gender'];
  var firstname = jD.kunde[hashCode][0]['firstname'];
  console.log(str);