if-else语句未定义的对象

时间:2013-12-08 13:18:47

标签: jquery json

发生了一些奇怪的事情:

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。 (当值==全部时)

所以,我不知道为什么在添加语句时脚本被破坏了。有谁知道为什么这不起作用以及如何解决它?

2 个答案:

答案 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'来引用否则脚本将其视为一个未声明的变量。