Ajax 无法读取属性';价值';未定义的onchange事件的类型

Ajax 无法读取属性';价值';未定义的onchange事件的类型,ajax,json,Ajax,Json,我使用包含数据的json文件处理Ajax。我只想通过ajax以我设计的某种形式检索数据 以下是json文件: { "movies":[ { "title":"Thegodfather", "year":"1972", "genre":"Drama", "directory":"franl stploen" }, { "title":"superBad", "year":"2007",

我使用包含数据的json文件处理Ajax。我只想通过ajax以我设计的某种形式检索数据

以下是json文件:

{
  "movies":[
    {
      "title":"Thegodfather",
      "year":"1972",
      "genre":"Drama",
      "directory":"franl stploen"
    },
    {
      "title":"superBad",
      "year":"2007",
      "genre":"comedy",
      "directory":"franl stploen"
    },
    {
      "title":"The Departed",
      "year":"2006",
      "genre":"Drama",
      "directory":"franl stploen"
    },
    {
      "title":"The Expandalbes",
      "year":"2010",
      "genre":"Action",
      "directory":"Silvster stalone"
    },
    {
      "title":"Batman",
      "year":"2008",
      "genre":"Acion",
      "directory":"franl stploen"
    }
  ]
}
html代码非常简单:

<body onload="getmovietitles()">
  <div id="container"><h1>My Favorites's Movies</h1></div>  
  <div id="movietitle"></div> 
  <br />
  <div id="movieinfo"></div>


  <pre>
    <script>
    function getmovietitles() {
        var xmlhttp;
        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {// code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }

        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                var jsondata = JSON.parse(xmlhttp.responseText);
                var movies = jsondata.movies;
                var output = '<form>';
                output +='<select id="movie_select" onchange="movieSelect()">';

                for (var i=0; i < movies.length;i++){
                    output +='<option value="'+i+'">'+movies[i].title+'</option>';
                }

                output += '</select>';
                output += '</form>';
                document.getElementById("movietitle").innerHTML = output;
            }
        }

        xmlhttp.open("GET","movies.json",true);
        xmlhttp.send();
    }


    function movieSelect() {
        var selectbox = document.getElementById("movie_select");
        var movieindex = selectbox.options[selectbox.selectedindex].value;

        getmovieinfo(movieindex);
    }   

    function getmovieinfo(i) {
        var xmlhttp;
        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {// code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }

        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                var jsondata = JSON.parse(xmlhttp.responseText);
                var movies = jsondata.movies;
                var output='';
                output +='<li>Year: '+movies[i].year+ '</li>';
                output +='<li>Genre: '+movies[i].genre+ '</li>';
                output +='<li>Directory: '+movies[i].directory+ '</li>';
                document.getElementById('movieinfo').innerHTML = output;
            }
        }
        xmlhttp.open("GET","movies.json",true);
        xmlhttp.send();
    }
    </script>
  </pre>  

我最喜欢的电影

函数getmovietitles(){ var-xmlhttp; if(window.XMLHttpRequest){//IE7+、Firefox、Chrome、Opera、Safari的代码 xmlhttp=新的XMLHttpRequest(); }else{//IE6、IE5的代码 xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”); } xmlhttp.onreadystatechange=函数(){ if(xmlhttp.readyState==4&&xmlhttp.status==200){ var jsondata=JSON.parse(xmlhttp.responseText); var movies=jsondata.movies; var输出=“”; 输出+=''; for(var i=0;i; 输出+='
  • 类型:'+movies[i].类型+'
  • '; 输出+='
  • 目录:'+movies[i]。目录+'
  • ; document.getElementById('movieinfo')。innerHTML=输出; } } open(“GET”,“movies.json”,true); xmlhttp.send(); }
    脚本函数中有一个问题,但我不知道它在哪里

    我只想知道问题出在哪里,为什么没有运行?

    输入错误:

    var movieindex = selectbox.options[selectbox.selectedIndex].value;
    
    应该是:

    var movieindex = selectbox.options[selectbox.selectedIndex].value;