为什么我得到“;无法读取属性';obj2';未定义的“;在一个上,而不是在另一个上


Why does I get "Cannot read property 'obj2' of undefined" on one but not the on the other one?

嗨,我试图制作一个脚本,通过按下一个按钮可以获得对象的更多信息,但到目前为止我遇到了一些问题。当我点击"mer info"时,代码在第一个"Drue"上运行良好,但如果我尝试按下"Eple"或另一个,我会得到错误"无法读取未定义的属性'objX'",其中X是php 中数组的名称

这只是第一个对象"Drue"answers"Eple"的代码

    var request = new XMLHttpRequest();
request.onreadystatechange = function () {              
    if (request.readyState == 4 && request.status == 200) {
        var response = request.responseText;
        var mink = JSON.parse(request.responseText);
        text.innerHTML = mink[0].obj1;
        epletext.innerHTML = mink[1].obj1;
        banantext.innerHTML = mink[2].obj1;
        orangetext.innerHTML = mink[3].obj1;
    } else {
        text.innerHTML = "pissing..."; 
        epletext.innerHTML = "pissing..."; 
        banantext.innerHTML = "pissing..."; 
        orangetext.innerHTML = "pissing..."; 
    }
}
request.open("GET", "info.php", true);
request.send();
btn.onclick = function (){
    request.onreadystatechange = function () {              
        if (request.readyState == 4 && request.status == 200) {
            if (drue == 0) {
                var response = request.responseText;
                var mink = JSON.parse(request.responseText);
                text.innerHTML = mink[0].obj2;
                drue = 1;
            } else {
                var response = request.responseText;
                var mink = JSON.parse(request.responseText);
                text.innerHTML = mink[0].obj1;
                drue = 0;
            }                   
        } else {
            text.innerHTML = "pissing..."; 
        }
    }
    request.open("GET", "info.php", true);
    request.send();
}
eple.onclick = function (){
    request.onreadystatechange = function () {
        if (request.readyState == 4 && request.status == 200) {
            if (eplenr == 0) {
                var response = request.responseText;
                var mink = JSON.parse(request.responseText);
                epletext.innerHTML = mink[1].obj2;
                eplenr = 1;
            } else {
                var response = request.responseText;
                var mink = JSON.parse(request.responseText);
                epletext.innerHTML = mink[1].obj1;
                eplenr = 0;
            }
        } else {
            epletext.innerHTML = "pissing..."; 
        }
    }
    request.open("GET", "info.json", true);
    request.send();
}

这是我使用的php代码

<?php
$shop = array( 
            array( "obj1" => "en fin kladd druer", 
                   "obj2" => "en nydelig kladd med ferske druer hentet fjellene i frankrike, gravd ned ved røttene til palmene i Miama og fryst i isen på Grønnland for å gi den perfekte smaken de har",
                ),
            array( "obj1" => "et grønnt og fint eple", 
                   "obj2" => "et fantastisk eple hentet fra hagen til Gjermung",
                ),
            array( "obj1" => "en pakke er på 4 bananer", 
                   "obj2" => "Bananene er håndplukket av slaveaper i skogene i Atlantis",
                ),
            array( "obj1" => "store appelsiner", 
                   "obj2" => "disse appelsiene er det ikke noe spessielt med, de er helt vanlige, noen av dem har litt mugg på seg",
                )
);

header('Content-Type: application/json');
echo json_encode($shop);
?>

感谢您观看

mink[0]不存在时,您正试图访问mink[0].obj2。你可以很容易地检查这个

if (mink) text.innerHtml = mink[0].obj;