getElementById中断脚本

时间:2011-03-16 14:35:33

标签: javascript ajax

我正在做一个小项目,但我被困住了,不知道我做错了什么 我使用Ajax来调用更新MYSQL行的php脚本。

javascript:

function savecust()
{
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("custdetails").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","./ajax/savecust.php?id=" + document.getElementById('id').value,true); //More arguments should still be passed.
xmlhttp.send();
}

如果我删除了document.getElementById('id').value脚本的工作原理并完成了应该做的事情。 (我得到了PHP的回复,显然是

我将脚本与其他一些脚本一起加载到页面的头部:

<script src="js/custedit.js" type="text/javascript"></script>

这就是我调用脚本的方式:

<input type='button' onclick='savecust()' value='Save' />

非常感谢任何帮助; - )。

谢谢!

修改

  • 内容应该存在的div。
  • PHP脚本现在返回错误(因为它没有获得所有必需的参数)
  • 内容(以及带有id:'id'的文本字段)由另一个脚本加载。这是一个问题吗?如果你在浏览器中查看源代码,那么文本字段就不存在了。但是它们在浏览器中可见。

编辑2

所以,我在我的脚本之上运行了这个测试:

var thisid = 'id';//should get info from <input type='text' name='id' />
var T = document.getElementById(thisid);
if (T) {
     alert("element exists" + T.value);
} else {
alert("nothing to be found");
}

确实无法找到该元素。这使我指出了正确的方向 <input type='text' name='id' />由另一个Ajax脚本插入。所以我认为第二个脚本无法找到它。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

如果元素属性不存在,则无法访问它。

也许是一个测试:

var thisid = 'id';//whatever it REALLY is...
    var T = document.getElementById(thisid);
    if (T) {
         alert("element exists" + T.value);
    }

答案 1 :(得分:0)

最明显的原因是没有字段的id为id,或者脚本运行时HTML尚未完全加载。

您应检查浏览器的脚本错误(在Firefox上使用Firebug或在Internet Explorer上按F12)