0

下面是一个非常简单的 AJAX 请求,它工作得很好,直到我在里面放了一个简单的语句。由于第 4 行,它失败了。

var wlen = str.value.length

下面是 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>

name_search_new.php页面查找与在文本框中键入的内容相似的值并返回这些值。这个页面与这个问题无关,因为任何 php 页面总是会因第 4 行新变量/赋值而失败,并且它总是会在变量/赋值消失的情况下工作。

如果有帮助,下面列出了对该功能的请求......它也在“文本区域”框中也失败了。

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

任何帮助表示赞赏,杰伊

4

2 回答 2

3

你不需要做str.value.lengthstr.length是你需要的。

这是一个 jsfiddle 演示:

http://jsfiddle.net/ahEeH/

于 2012-05-28T18:41:21.900 回答
3

你在打电话name_search(this.value);因此,str = this.value. 然后您的第 4 行有效地执行this.value.value.length。但是,this.value是一个字符串,它没有一个名为value- 所以this.value.value是未定义的属性。访问未定义的属性将失败。

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

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

于 2012-05-28T18:39:04.667 回答