我得到了以下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);
});
答案 0 :(得分:1)
如果您遍历子对象并且不确定它们是否存在,则可以使用hasOwnProperty方法。那你就不会收到错误。而且一些错误处理也会很好。在您的ajax请求中,您可以指定错误函数并捕获不需要的副作用,或者将其包装在try-catch块中。但是当应用程序准备就绪时,它应该没有错误。
即G。 if(data.kunde.hasOwnProperty(" 1234"))..
<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);