2011-09-28 35 views
0

我正在做一個PHP處理腳本的AJAX帖子。我正在檢查MySQL是否返回任何行,然後繼續註冊。我遇到的問題 - MySQL快速響應1行,然後回聲0並繼續註冊,即使存在0行。爲什麼我看到1行返回,然後迅速糾正自己?PHP MySQL_return_rows =回聲1然後0

$.ajax({ 
      type: "POST", 
      data: "username="+$(this).attr('username')+"password="+$(this).attr('email')+$(this).attr('password')+$(this).attr('passconf'), 
      url: "includes/register.php", 
      success: function(msg) 
      { 
       alert(data); 
       $("#result").data($data); 
      } 
     }); 

    }); 

PHP代碼:

$res = mysql_query("SELECT * FROM users WHERE username = '".$username."'"); 
        if (!$res) { 
    $message = 'Invalid query: ' . mysql_error() . "\n"; 
    $message .= 'Whole query: ' . $query; 
    die($message); 
} 
        $num = mysql_num_rows($res); 
        echo $num; 
+0

你是什麼意思,快速回顯1?你發送多個請求到這個腳本? – Headshota

回答

2

事件處理程序可能是未能阻止默認操作,導致被提交兩次的形式(通過AJAX一次,通過普通瀏覽器表單提交一次)。嘗試返回false這樣的:

$(login_form).click(function() { 
    $.ajax({ ... }); 
    return false; 
}); 

返回false阻止默認操作,停止冒泡。如果你想冒泡仍然適用,你也可以明確地防止像這樣的默認值:

$(login_form).click(function(ev) { 
    ev.preventDefault(); 
    $.ajax({ ... }); 
});