2 cyoeki cyoeki 于 2016.09.16 11:48 提问

JS运行时出错,提示appendChild为空
 <body>
    <h1>省市联动</h1>
    <h3 id="h3"></h3>
    <select name="province" id="p">
        <option>===请选择省份===</option>
    </select>
    <select name="city" id="c">
        <option>===请选择市===</option>
    </select>
</body>
<script type="text/javascript" src="<c:url value='//ajax-lib/ajaxutils.js'/>"></script>
<script type="text/javascript">
      window.onload = function(){
          var xmlHttp = createXMLHttpRequest();
          xmlHttp.open("GET","<c:url value='/ProvinceServlet'/>",true);
        xmlHttp.send(null);
        xmlHttp.onreadystatechange = function(){
            if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                var text = xmlHttp.responseText;
                var proArray = eval("("+text+")");
                for(var i=0;i<proArray.length;i++){
                    var pro = proArray[i];
                    var option = document.createElement("option");
                    option.value = pro.pid;
                    var node = document.createTextNode(pro.name);


                    option.appendChild(node);
                    //document.write(option.text);
                    document.getElementById("p").appendChild(option);
                }
            }else {
                document.write("!");
            }
        };
      };

  </script>

3个回答

showbo
showbo   Ds   Rxr 2016.09.16 17:10

没有问题,直接模拟你的数据

 <body>
    <h1>省市联动</h1>
    <h3 id="h3"></h3>
    <select name="province" id="p">
        <option>===请选择省份===</option>
    </select>
    <select name="city" id="c">
        <option>===请选择市===</option>
    </select>
</body>
<script type="text/javascript">
    //window.onload = function () {
       // var xmlHttp = createXMLHttpRequest();
       // xmlHttp.open("GET", "<c:url value='/ProvinceServlet'/>", true);
       // xmlHttp.send(null);
      //  xmlHttp.onreadystatechange = function () {
         //   if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                var text ='[{name:"name1",id:"id1"}]'// xmlHttp.responseText;
                var proArray = eval("(" + text + ")");
                for (var i = 0; i < proArray.length; i++) {
                    var pro = proArray[i];
                    var option = document.createElement("option");
                    option.value = pro.pid;
                    var node = document.createTextNode(pro.name);


                    option.appendChild(node);
                    //document.write(option.text);
                    document.getElementById("p").appendChild(option);
                }
            //} else {
           //     document.write("!");
          //  }
       // };
    //};

</script>
cyoeki
cyoeki 麻烦前辈再给看看,确定不是servlet的问题。
接近 2 年之前 回复
cyoeki
cyoeki 我试过不太行,前辈看一下我在谷歌浏览器捕捉到的错误,下面传图……
接近 2 年之前 回复
cyoeki
cyoeki   2016.09.16 17:23

图片说明

Marksinoberg
Marksinoberg   Ds   Rxr 2016.09.17 08:39
  var proArray = eval("(" + text + ")");

这一行出错了吧,个人觉得应该这样将字符串转成对象。

var proArray = eval('var data='+ text);

以后就可以使用data这个变量来更新你的界面了。

Marksinoberg
Marksinoberg 回复cyoeki: 不用加括号的
接近 2 年之前 回复
cyoeki
cyoeki 如果是这样的话不是必须要加上括号才能执行?
接近 2 年之前 回复
Marksinoberg
Marksinoberg 可以这么理解
接近 2 年之前 回复
cyoeki
cyoeki 用eval函数来执行json字符串的格式是这样的吧?执行的json字符串是从servlet发送过来的
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
JavaScript利用append添加元素报错
1、错误描述 在IE浏览器上: Uncaught HierarchyRequestError:Failed to excute 'appendChild' on 'Node':The new child element contains the parent. 在谷歌浏览器上: SCRIPT5022:DOM Exception:HIERARCHY_REQUEST_ERR(3) er
1.javaScript(JS)常用函数之 appendChild 和removeChild
javaScript(JS)常用函数之 appendChild 和removeChild
出错提示
运行时出错提示
js之DOM操作(插入节点appendChild())
插入节点appendChild() 在指定节点的最后一个子节点列表之后添加一个新的子节点。 语法: appendChild(newnode) 参数: newnode:指定追加的节点。 demo: 无标题文档 JavaScript HTML var otest = document.getElementById("test"); va
js动态创建table节点并通过appendChild拼接子元素的问题
今天看到一同学的贴子http://topic.csdn.net/u/20120717/10/51e85309-55e5-4f5a-bf0e-bef98c31ae23.html?seed=386935035&r=79147953#r_79147953,发现了常用的table中的一个误区,总结了一下 代码: //创建任意类型tag function make(tagname,attr
HTML DOM appendChild()方法
appendChild() 1)向节点添加最后一个子节点 eg:<html> <body> <ul id="a"> <li>Coffee</li> <li>Tea</li> </ul> <p >请点击按钮向列表中添加项目。</p> <script> function add() { var para=document.createElement("li"); var node=d
append和appendTo的区别以及js中的appendChild用法
append和appendTo的区别以及js中的appendChild用法 很多像我一样接触JS没多久的小白对append和appendTo的区别以及js中的appendChild用法都会有所模糊,下面对这个进行详细区分: append和appendTo的区别: append()前面是要选择的对象,后面是要在对象内插入的元素内容  appendTo()前面是要插入的元素内容且为
js appendChild removeChild 添加 删除 子节点
js appendChild removeChild 添加 删除 子节点 function createSpan(){ var span=document.createElement("span"); span.innerHTML="子节点"; document.getElementById("content").appendChild(span); } func
关于JS中appendChild的用法
这是一个段落。 这是另一个段落。 var para=document.createElement("p"); var node=document.createTextNode("这是新段落。"); para.appendChild(node); var element=document.getElementById("div1"); element.appendChild(para);
判断用户名
用.js文件判断用户名、密码是否为空提示!