Javascript 带有value.length的AJAX问题

Javascript 带有value.length的AJAX问题,javascript,ajax,Javascript,Ajax,下面是一个非常简单的AJAX请求,在我将一条简单的语句放入其中之前,它可以正常工作。因为第4行的原因,它失败了 下面是AJAX代码 <script type="text/javascript"> function name_search(str) { var wlen = str.value.length; var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safa

下面是一个非常简单的AJAX请求,在我将一条简单的语句放入其中之前,它可以正常工作。因为第4行的原因,它失败了

下面是AJAX代码

<script type="text/javascript">
function name_search(str)
{
var wlen = str.value.length;
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("name_div").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","/it/device/action/name_search_new.php?q="+str,true);
xmlhttp.send();
}
</script>

函数名搜索(str)
{
var wlen=str.value.length;
var-xmlhttp;
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“name_div”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”,”/it/device/action/name\u search\u new.php?q=“+str,true);
xmlhttp.send();
}
name\u search\u new.php页面查找与文本框中键入内容类似的值并返回这些值。尽管如此,此页面与此问题无关,因为任何php页面都会在第4行新变量/赋值时失败,并且在变量/赋值消失时仍能正常工作。

如果有帮助,此功能的请求如下所示。。。它在“文本区域”框中也会失败

<input type="text" name="name" id="name" value="" style="color:red" 
placeholder="Device/Item(Required)" onkeyup="name_search(this.value)" />

感谢您的帮助,
Jay

您正在调用
name\u search(this.value)
;因此,
str=this.value
。然后,第4行有效地执行
this.value.value.length
。但是,
this.value
是一个字符串,它没有名为
value
的属性,因此
this.value.value
未定义。访问未定义上的属性将失败

更改为
str.length
,它应该可以工作


顺便说一句:这个问题与AJAX无关。

您正在调用
name\u search(this.value)
;因此,
str=this.value
。然后,第4行有效地执行
this.value.value.length
。但是,
this.value
是一个字符串,它没有名为
value
的属性,因此
this.value.value
未定义。访问未定义上的属性将失败

更改为
str.length
,它应该可以工作


顺便说一句:这个问题与AJAX无关。

您不需要执行
str.value.length
<代码>str.length是您需要的

下面是一个JSFIDLE演示:


您不需要执行
str.value.length
<代码>str.length是您需要的

下面是一个JSFIDLE演示:


嗯,现在我明白了,这很有道理。谢谢感谢您提供的jsfiddle.net参考-非常酷!JSFIDLE是一个很好的测试工具,我一直在使用它:)嗯,现在我看到了,它非常有意义。谢谢感谢您提供的jsfiddle.net参考-非常酷!jsfiddle是一个很好的测试工具,我一直在使用它:)谢谢,现在我知道错误在哪里了,这很有意义。你是对的,它与AJAX无关,但当时我不知道问题是什么,所以我无法排除可能的AJAX问题。谢谢,现在我知道错误在哪里了,这是有道理的。你是对的,它与AJAX无关,但当时我不知道问题出在哪里,所以我无法排除可能的AJAX问题。
<input type="text" name="name" id="name" value="" style="color:red" 
placeholder="Device/Item(Required)" onkeyup="name_search(this.value)" />