发生了一些奇怪的事情:
JSON:
{
"all": {
"id": [
"64",
"65"
],
"code": [
"AqCeTZ3Q",
"CTRtldIw"
],
"file_match": [
"voorbeeld.php",
"Handeler.rar"
],
"file_size": [
"30",
"146693"
],
"expire": [
"1386543600",
"1386543600"
],
"ip": [
"dada",
""
],
"can_used": [
"0",
"1"
],
"opmerking": [
"",
""
]
},
"id": [
"65"
],
"active": {
"code": [
"CTRtldIw"
],
"file_match": [
"Handeler.rar"
],
"file_size": [
"146693"
],
"expire": [
"1386543600"
],
"ip": [
""
],
"can_used": [
"1"
],
"opmerking": [
""
]
},
"expired": {
"id": [
"64"
],
"code": [
"AqCeTZ3Q"
],
"file_match": [
"voorbeeld.php"
],
"file_size": [
"30"
],
"expire": [
"1386543600"
],
"ip": [
"dada"
],
"can_used": [
"0"
],
"opmerking": [
""
]
}
}
脚本1(有效):
function update() {
var value = document.getElementById("chooser").value;
$.ajax({
url: "./json.php",
dataType: 'json',
success: function(data, value) {
alert(data.all.id);
}
});
}
输出:警告值:64,65。正确!
脚本2 :(不工作,我不知道为什么。)
function update() {
var value = document.getElementById("chooser").value;
$.ajax({
url: "./json.php",
dataType: 'json',
success: function(data, value) {
if(value == all) {
alert(data.all.id);
} else if (value == active) {
alert(data.active.id);
} else { // expired
alert(data.expired.id);
}
}
});
}
错误:未捕获的ReferenceError:未定义all。 (当值==全部时)
所以,我不知道为什么在添加语句时脚本被破坏了。有谁知道为什么这不起作用以及如何解决它?
答案 0 :(得分:0)
如果要在ajax处理程序中使用ajax之前检索的值,则必须在其作用域中没有任何其他具有相同名称的变量来覆盖它,即从成功处理程序中删除value
参数。
function update() {
var value = document.getElementById("chooser").value;
$.ajax({
url: "./json.php",
dataType: 'json',
success: function(data) {
if(value == "all") {
alert(data.all.id);
} else if (value == "active") {
alert(data.active.id);
} else { // else expired
alert(data.expired.id);
}
}
});
}
答案 1 :(得分:0)
基于你的json。 '所有'只能通过' data.all'来引用否则脚本将其视为一个未声明的变量。