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行目の新しい変数/割り当てで常に失敗し、変数/割り当てがなくなった状態で常に機能するためです。

役立つ場合は、この関数のリクエストを以下に示します...「textarea」ボックス内でも失敗します。

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

助けていただければ幸いです、ジェイ

4

2 に答える 2

3

あなたは呼んでいname_search(this.value)ます; したがって、str = this.value。次に、4行目が効果的に実行されthis.value.value.lengthます。ただし、this.valueは文字列であり、というプロパティがないvalueためthis.value.value、未定義です。undefinedのプロパティへのアクセスは失敗します。

に変更するstr.lengthと、機能するはずです。

ところで:問題はAJAXとは何の関係もありません。

于 2012-05-28T18:39:04.667 に答える
3

する必要はありませんstr.value.lengthstr.length必要なものです。

これがjsfiddleのデモンストレーションです:

http://jsfiddle.net/ahEeH/

于 2012-05-28T18:41:21.900 に答える