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 に変換します

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

于 2013-05-09T05:39:17.713 に答える