2011-07-13 16 views
0

これは私が昨夜質問した別の質問のフォローアップです。私の問題は、スクリプトが動作しないことではなく、xmlhttprequestオブジェクトが応答テキストを返すときに、HTML入力要素のいくつかの非常に奇妙な繰り返しが発生していることです。ここでは、コードです:JSバグ:入力フィールドがxmlhttp応答テキストで繰り返される

<!DOCTYPE HTML> 

<?php 

    if(!empty($_GET['uName'])) 
    { 
     $r = mysql_connect("localhost", "root", "pass") or die("Couldn't connect to db"); 
     mysql_select_db("db", $r) or die ("Couldn't select db"); 
     $q = mysql_query("select * from users where uName = '{$_GET['uName']}'") or die("Couldn't query table"); 
     $data = mysql_fetch_assoc($q); 
     mysql_close($r); 
    } 

?> 

<html> 

<head> 

</head> 

<body> 

<form> 

    <input type="text" name="fUName" onchange="ShowUser(fUName.value);" value="name" style="width:125px;"> 

</form> 

<div id="display"><?php print "ID = {$data['id']}"; ?></div> 

</body> 

</html> 

<script type='text/javascript'> 

function ShowUser(name) 
{ 
    if(name.length == 0) 
    { 
     document.getElementById("display").innerHTML = "Please enter a username to check"; 
     return; 
    } 
    if(window.XMLHttpRequest) 
    { 
     xmlhttp = new XMLHttpRequest(); 
    } 
    else 
    { 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange = function() 
    { 
     if(xmlhttp.readyState == 4 && xmlhttp.status == 200) 
     { 
      document.getElementById("display").innerHTML = xmlhttp.responseText; 
     } 
    }; 

    xmlhttp.open("GET", "index.php?uName=" + name, true); 
    xmlhttp.send(); 

} 

</script> 

ここで奇妙な問題です:

enter image description here

あり唯一の1つの入力フィールドも、私はそれにテキストを入力し、それがフォーカスを失ったときしかし、orginallyである必要があり、 JSがトリガーされ、別の入力フィールドも表示されます。

は1つのスクリプトでPHP、JSとHTML/CSSの悪い習慣を無視してください、これは私がバッフル付きだ

:)悪い方のためになっている簡単なテストになるはずでした!

ありがとうございました。

答えて

1

問題は、すべてのコードが1ページにあるという点にあります。これを考えてみましょう。あなたはindex.phpを読み込みます。それがすべて表示されたら、この同じページを再度(AJAXリクエストのために)呼び出すので、基本的には "ねえ、このページをもう一度ロードしてみたいです"と言っているので、なぜ重複したフィールドで終わるのですか?

ファイルをindex.phpやgetuser.phpなどのファイルに分けてみてください。

+0

ありがとうございました。簡単な例があってもスクリプトを急いではいけません! :) – Lee

関連する問題