PDA

View Full Version : مشکل در رابطه با آژاکس



msafvati
یک شنبه 26 مهر 1388, 18:29 عصر
با سلام خدمت دوستان
منم در حین کار با آژاکس و PHP با مشکل بر خورد کردم از دوستان خواهش می کنم که من رو راهنمایی کنند
با تشکر


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

<script type="text/javascript">
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
//Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}


function checkUser()
{
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}

url='http://127.0.0.1/mas/index.php?user='+document.getElementById('user').v alue;
//alert(url);
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);

}

function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
if (xmlHttp.responseText==1)
{
document.getElementById("user").style.border="1px solid #FF0000";
}
else{
document.getElementById("user").style.border="1px solid #00CC00";
}
}


}

</script>
</head>

<body>
<form action="http://127.0.0.1/mas/index.php" method="get">
<table width="300" border="0">
<tr>
<td><label for="name">name </label></td>
<td><input type="text" id="name" /></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><label for="user">user </label></td>
<td><input type="text" id="user" /></td>
<td style="text-align:left"><input type="button" value="check" onclick="checkUser()"/></td>
</tr>
<tr>
<td><label for="pass">password</label></td>
<td><input type="password" id="pass" /></td>
<td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td colspan="2"><input type="submit" id="send" /></td>
</tr>
</table>
</form>
</body>
</html>





PHP:


<?php
$con=mysql_connect('127.0.0.1','root','root');
if($con){
echo "Connection Successfuly \n";
}
$db=mysql_select_db('Ajax',$con);
$sql="SELECT * FROM `users` WHERE `user` ='".$_GET['user']."'";
$r=mysql_query($sql);
$result=mysql_num_rows($r);
echo( $result);
?>

msafvati
یک شنبه 26 مهر 1388, 20:06 عصر
با تشکر از لطف شما
من میخوام که اگر دکمه check در صفحه زده میشه،از این تکنیک استفاده شه و اگر داده ورودی من در DB من وجود داشت border باکس ورودی رو سبز کنه،اما این در حالیه که به ازای داده های غیر هم که در پایگاه وجود نداره این کار انجام میشه.
اگه راهنمایی کنید واقعا ممنون میشم

امیـرحسین
یک شنبه 26 مهر 1388, 20:34 عصر
تابع stateChange، خط 4، اینجوری تست کنید ببینید درست میشه؟

if (xmlHttp.responseText=="1")

msafvati
یک شنبه 26 مهر 1388, 21:51 عصر
با تشکر از شما،امیر جان کد پیشنهادی شما رو تست کردم اما جواب نگرفتم

امیـرحسین
دوشنبه 27 مهر 1388, 00:11 صبح
اون 1 همیشه باید بصورت string باشه چون xmlHttp.responseText از نوع String هست همیشه.

اینم تست کنید و ببینید چه جوابی میده:
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
alert('Type: ' + typeof xmlHttp.responseText + ', Value: ' + xmlHttp.responseText);
document.getElementById("user").style.border="1px solid " + (xmlHttp.responseText=="1" ? "#FF0000" : "#00CC00");
}
}

msafvati
دوشنبه 27 مهر 1388, 00:34 صبح
با سلام مجدد و یک تشکر حسابی
نه متاسفانه این کد رو هم تست کردم اما باز جواب نگرفتم البته مقادیری رو که برای Alert به ازای Response text فرض کردید درست هست یعنی اگه داده من وجود داشته باشه مقدار 1 و در غیر این صورت 0 رو بر میگردونه اما در هر حال رنگ border سبز میشه(البته هر شرطی هم که بزاریم در هر صورت اجرا میشه)!!!!
responsetext هم به ازای خروجی درست هست یعنی در صورت وجود داده ها در DB 1 رو بر میگردونه اما شرط هاش درست کار نمیکنن.

msafvati
دوشنبه 27 مهر 1388, 23:07 عصر
responsetext هم به ازای خروجی درست هست یعنی در صورت وجود داده ها در DB 1 رو بر میگردونه اما شرط هاش درست کار نمیکنن.

امیـرحسین
دوشنبه 27 مهر 1388, 23:34 عصر
شما میخواید یه false/true داشته باشید. این 1 و 0 حساسند. از کلمات استفاده کنید. مثلا php بجای دادن عدد، کد رنگ رو بده و شما مستقیما تو خروجی بذارید:
<?php
$con=mysql_connect('127.0.0.1','root','root');
if($con){
echo "Connection Successfuly \n";
}
$db=mysql_select_db('Ajax',$con);
$sql="SELECT * FROM `users` WHERE `user` ='".$_GET['user']."'";
$r=mysql_query($sql);
$result=mysql_num_rows($r);

echo ($result == 1 ? "#FF0000" : "#00CC00");
?>

function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
document.getElementById("user").style.border="1px solid " + xmlHttp.responseText;
}

msafvati
سه شنبه 28 مهر 1388, 21:17 عصر
از شما دوست عزیز تشکر می کنم.
بله از alert هم استفاده کردم و به جواب نرسیدم.در هر صورت جواب False رو بر میگردونه