1

我有以下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。我发现问题是 expl[0]==1 而不是 expl[0]=="1"。

当我把我的代码变成这个时,它运行顺利。:-

if(expl[0]==1)
alert("1");

else if(expl[0]==99)
alert("99");

仅当我将代码上传到服务器时才会发生这种情况。在本地主机上没有问题。问题是什么,服务器上是否有任何设置导致该问题?

谁能解释一下,这里发生了什么?

4

2 回答 2

4

这是因为:

将数值分配给变量时,不要在值周围加上引号。如果您在数值周围加上引号,它将被视为文本。

于 2013-05-09T05:32:15.810 回答
0

在传递值并从函数返回它们时,请确保不要将引号添加到 int 值。或在下面添加函数以检查/将它们转换为 int

函数 isint( $mixed ) { return ( preg_match( '/^\d*$/' , $mixed) == 1 ); }

于 2013-05-09T05:39:17.713 回答