InvalidStateError:DOM异常11和未捕获的TypeError:无法调用方法'提交'为null

时间:2013-07-05 19:17:11

标签: javascript html5 dom

我搜索了一个可能的答案,并通过几个帖子,包括 How to fix "Uncaught TypeError: Cannot call method 'appendChild' of null"Receiving "InvalidStateError: DOM Exception 11" during websocket.send,但似乎没有一个能解决我的问题。 将数据从html表单保存到mysql数据库的保存按钮工作正常,直到页面开始出现两个错误enter image description here

  1. 页面上的下拉列表使用ajax从数据库动态更新。它们仍然正常工作,并根据所选的选项自动更新,但当我点击任何下拉菜单时,错误控制台显示"Uncaught error: InvalidStateError: DOM Exception 11 on createoptions.js line 37

  2. 当我点击保存按钮,而不是任何响应或将数据保存到数据库时,会显示错误xmlhttp.send();。要注意,调用submit()方法的对象已经存在。我使用了Uncaught TypeError: Cannnot call method "submit" of null,并且学生数据格式存在于同一页面上。

  3. 请强调这些错误的原因以及我该如何解决这些错误。以下是相关代码。

    createoptions.js

    document.getElementById('studentdata').submit()"

    page.php,被引用的行是function setdepartment(value){ 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) { document.getElementById("departmentselect1").innerHTML=xmlhttp.responseText; } } switch(value){ case "Allied Health Sciences" : xmlhttp.open("GET","deptahs.php",true); break; case "Engineering and Inter-disciplinary sciences" : xmlhttp.open("GET","depteids.php",true); break; case "HIMSR" : xmlhttp.open("GET","depthimsr.php",true); break; case "Islamic Studies and Social Sciences" : xmlhttp.open("GET","deptisss.php",true); break; case "Management and Information Technology" : xmlhttp.open("GET","deptmanagement.php",true); break; case "Medicine (Unani)" : xmlhttp.open("GET","deptmedicine.php",true); break; case "Nursing" : xmlhttp.open("GET","deptnursing.php",true); break; case "Pharmacy" : xmlhttp.open("GET","deptpharmacy.php",true); break; case "Science" : xmlhttp.open("GET","deptscience.php",true); break; } xmlhttp.send(); }

    <li><a class="button black" form="studentdata" onclick="document.getElementById('studentdata').submit()">Save</a></li>

1 个答案:

答案 0 :(得分:3)

您的第一个错误"Uncaught error: InvalidStateError: DOM Exception 11 on createoptions.js line 37是由操纵DOM引起的。我认为这可能与以下事实有关:您有两个ID为departmentselect1的元素,或者具有相同ID的div是无效语法,因为它不能是select元素的子元素。您可以点击Chrome中此错误旁边的箭头,然后将其追踪到实际发生的位置。 Similar question

Uncaught TypeError: Cannnot call method "submit" of null表示document.getElementById('studentdata')与任何元素都不匹配,因此返回nullnull没有方法,因此会抛出此错误。这很奇怪,但是因为你的表单有双重id并且语法无效,因此可能有未定义的行为。尝试解决第一个问题,它可能会神奇地解决另一个问题。

编辑:

我仍然认为您应该在value函数中调试setdepartment的值,因为该菜单不起作用。如果值与任何情况都不匹配,您的函数有什么行为?菜单的响应数据不起作用是什么?