2013-05-09 85 views
1

我有以下JS代碼:Ajax的POST請求返回int,而不是字符串

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」。

當我把我的代碼,這一個,它運行smooth.:-

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

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

當我我的代碼上傳到服務器,這纔會發生。本地主機沒有問題。問題是什麼,服務器上是否存在導致該問題的任何設置?

有人可以解釋我,這裏發生了什麼?

+1

不是你的問題的一部分。但作爲參考。對mysql_ *函數沒有更多的支持,它們被正式棄用,不再維護,並且將來會被刪除。您應該使用PDO或MySQLi更新您的代碼,以確保您的項目未來的功能。 – Schleis 2013-05-09 01:05:34

+0

@Schleis感謝您的信息。 – errorare 2013-05-09 01:17:11

回答

4

這是因爲:

當您分配一個數值變量,不要把周圍的值引號。如果您將引號放在數字值的周圍,它將被視爲文本。

0

雖然傳遞值並從函數返回它們,但不要將引號添加到int值。或添加下面的函數來檢查/將它們轉換爲int

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

相關問題