我有以下JS代码:
var dataString = "action=validateUsername"+
"&username="+usernameRegi+
"&lang="+lang;
$.ajax({
type: "POST",
url: "function.php",
data: dataString,
cache: false,
success: function(result)
{
var expl=result.split("|");
if(expl[0]=="1")
alert("1");
else if(expl[0]=="99")
alert("99");
}
});
这是我的function.php
if($_POST["action"]=="validateUsername")
{
$username=$_POST["username"];
$lang=$_POST["lang"];
$sqlSelect = "SELECT * FROM user where userName='".$username."'";
$sqlQuery = mysql_query($sqlSelect);
$rowCount = mysql_num_rows($sqlQuery);
if($rowCount>0)
{
if($lang=="BM")
echo "99|My msgA.";
else
echo "99|My msgB.";
}
else
{
if($lang=="BM")
echo "1|My msgC.";
else
echo "1|My msgD.";
}
}
问题是,我的ajax请求从未在成功时提醒1或99。我发现问题是[0] == 1而不是expl [0] ==" 1"。
当我将代码转换为此代码时,它运行顺畅。: -
if(expl[0]==1)
alert("1");
else if(expl[0]==99)
alert("99");
仅当我将代码上传到服务器时才会发生这种情况。 localhost没问题。问题是,服务器上是否有任何导致该问题的设置?
有人可以解释一下,这里发生了什么?
答案 0 :(得分:4)
这是因为:
为变量指定数值时,请勿在值周围加上引号。如果您在数字值周围加上引号,则会将其视为文本。
答案 1 :(得分:0)
传递值并从函数返回它们时,请确保不要为int值添加引号。或者添加下面的函数来检查/将它们转换为int
function isint($ mixed) { return(preg_match('/ ^ \ d * $ /',$ mixed)== 1); }