Ajax POST Requests返回int而不是string

时间:2013-05-09 01:02:44

标签: php ajax jquery

我有以下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没问题。问题是,服务器上是否有任何导致该问题的设置?

有人可以解释一下,这里发生了什么?

2 个答案:

答案 0 :(得分:4)

这是因为:

为变量指定数值时,请勿在值周围加上引号。如果您在数字值周围加上引号,则会将其视为文本。

答案 1 :(得分:0)

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

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