7

ログイン用のhtmlコードを次のように記述しました

<div id="wrapper">
<div id="page">
    <div class="aLogin">
        <label>User Name : </label>
        <input type="text" class="lname" />
        <label>Password : </label>
        <input type="password" class="lpwd" />
        <input type="submit" class="logSubmit" value="LOGIN" />
        <p class="lalert">test alert</p>
    </div>
</div>

検証用にjQueryを記述しました。アラート(ここでは使用<p class="lalert">test alert</p>)を動的に置き換えます。
問題は、これをIEで実行すると、アラートメッセージが2回表示されたことです。しかし、他のブラウザでは問題ありません。

jQuery

$(document).ready(function(){
   $('.logSubmit').click(function(){
    var name = $('.lname').val();
    var pwd = $('.lpwd').val();
    $.post("/login.php",{name:name,pwd:pwd}).success(function(data){
        var obj = jQuery.parseJSON(data);
        $('.lalert').fadeIn('slow');
        if(obj.success == 1){
            $('.lalert').css('color','#067800');
            $('.lname').val('');
            $('.pwd').val('');
            $('.lalert').html(obj.msg);
        }else{
            $('.lalert').css('color','#CC0000');
            $('.lalert').html(obj.msg);
        }
    });
  });
});

login.php

 <?php
   $name = $_POST['name'];
   $pwd = $_POST['pwd'];
   $err['success'] = 0;
   $err['msg'] = '';
   if($name != 'admin'){
   $err['msg'] = 'Invalid Name';
   }else if($pwd != 'admin'){
   $err['msg'] = 'Invalid Password';
   }else{
   $err['success'] = 1;
   $err['msg'] = 'Success';
   }
   echo json_encode($err);
?>

なぜこれが起こっているのかわかりません。誰かが私を助けることができますか..?

4

4 に答える 4

1

こんにちはあなたは「falseを返す」を書くのを忘れました。

$('.logSubmit').click(function(){ 
    var name = $('.lname').val(); 
    var pwd = $('.lpwd').val(); 
    $.post("/login.php",{name:name,pwd:pwd}).success(function(data){ 
        var obj = jQuery.parseJSON(data); 
        $('.lalert').fadeIn('slow'); 
        if(obj.success == 1){ 
            $('.lalert').css('color','#067800'); 
            $('.lname').val(''); 
            $('.pwd').val(''); 
            $('.lalert').html(obj.msg); 
        }else{ 
            $('.lalert').css('color','#CC0000'); 
            $('.lalert').html(obj.msg); 
        } 
    }); 
      return false;
  }); 
于 2012-07-02T05:09:11.933 に答える
0

使用する代わりに使用してみてください$('.logSubmit').click(function(){ ...}

以下の構文を使用します

$('.logSubmit').unbind('click').click(function(){ .....}

これで問題が解決する場合があります。

于 2012-06-29T08:53:36.767 に答える
0

returnfalseを追加してみてください.logSubmitに-バインダーをクリックします。また、送信はフォーム(送信)に関連しているため、送信タイプの入力を<button>に置き換えてみることができますが、これは実際の状況では当てはまりません。

于 2012-06-29T08:54:00.103 に答える
0

ついに私は解決策を得ました。問題は空のテキストノードが原因で発生します。IE8は、タグ の後の改行用に空のテキストノードを生成します。<input>,<select>,<img>

タグの後のスペースを削除しましたが、問題は解決しました

于 2012-07-11T13:01:21.240 に答える