2011-09-11 9 views
0

私はAJAXを学んでいるだけで、次のHTMLファイルは動作しません。私がキーをリリースするたびに、火かき棒は「ログインは機能ではない」と言います。なぜこのことが分かりませんか?どんな助けもありがとうございます。onKeyUpが機能していませんか?多分それは悪いアヤックスのコードですか?

<html> 
<head> 
<title>Ajax</title> 
<script type="text/javascript"> 
function makeAjax() { 
    var ajax; 
    try{ 
     ajax = new XMLHttpRequest(); 
    } 
    catch (e) { 
     try { 
      ajax = new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
     catch (e) { 
      try { 
       ajax = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      catch (e) { 
       alert("Your browser is either OLD or BAD! UPDATE!"); 
       return false; 
      } 
     } 
    } 
    ajax.onreadystatechange = function() { 
     if(ajax.readyState == 4 && ajax.status == 200) { 
      document.getElementById("btag").innerHTML = ajax.responseText; 
     } 
    } 
} 
function login() { 
    ajax.open("GET", "ajax.php", true); 
    ajax.send(null); 
} 
</script> 
</head> 
<body onLoad="makeAjax();"> 
<form name="login"> 
Username: <input type="text" onKeyUp="login();" /> 
<br /><br /> 
Password: <input type="password" onKeyUp="login();" /> 
<b id="btag"></b> 
</form> 
</body> 
</html> 

答えて

3

onKeyUp="login();"(もloginという名前の)フォームを見つけているようです。フォームの名前を別の名前(例:login_form)に変更してください

+0

...しかし、今放火犯は、ログイン機能にコンソールにアラートやログに入れ – diracdeltafunk

+0

PSがことを示しているだろう、これまであなたの助けに感謝し、「AJAXが定義されていません」と言いますそれは呼び出されていませんでした。この問題を引き起こすのはアヤックスではありませんでした。 – daniel

+1

'login'関数でアクセスできるように' ajax'をグローバルに定義する必要があります – daniel

0

別のフォーム名を使用してください。あなたは 'login'という名前のフォームとLoginというJavascript関数を持っています。私はファイヤーバグが2つの間で混乱していると思います...

また、関数外にAjax変数を配置します。

一つの問題を解決し
var ajax; 
function makeAjax() { 

    try{ 
     ajax = new XMLHttpRequest(); 
    } 
    catch (e) { 
     try { 
      ajax = new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
     catch (e) { 
      try { 
       ajax = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      catch (e) { 
       alert("Your browser is either OLD or BAD! UPDATE!"); 
       return false; 
      } 
     } 
    } 
    ajax.onreadystatechange = function() { 
     if(ajax.readyState == 4 && ajax.status == 200) { 
      document.getElementById("btag").innerHTML = ajax.responseText; 
     } 
    } 
} 
+0

これはFirebugとは関係ありません。それは名前空間の問題です。興味深いことに、XHTML 1.0 Strictはフォーム名属性を許可しないため、この混乱の可能性はありません。 –

+0

なぜ賛成投票ですか? – Sparky

+0

Strictであっても、入力(または他のフォーム)要素でも同様の問題が発生する可能性があることに注意してください。 –

関連する問題