2014-09-19 109 views
-1

我有一個JavaScript變量包含在發送JavaScript變量類型轉換到PHP變量

var value=true; 
alert(typeof(value)); //Output: boolean 

我使用AJAX

$.ajax({ 
    type: 'POST', 
    data: {value:value}, 
    url: 'ajax.php', 
    success: function (data) { 
     alert(data); 
    } 
}); 

在我的PHP代碼發送此變量的一個PHP文件的布爾值i得到的值作爲字符串

$value=$_POST['value']; 
echo gettype($value); //Output: String 

爲什麼我得到的值爲字符串..?

預先感謝您

+0

爲什麼你需要它是一個布爾值? PHP自動執行類型轉換。在PHP中,您可以嘗試像「if($ value == true){...}」一樣檢查它 – Zeusarm 2014-09-19 10:35:05

回答

3

所有POSTDATA的形式發來的字符串,因爲它不可能通過HTTP發送的任何其他數據類型。

數字數據類型被PHP猜到(「啊,這看起來像一個數字,我會自動轉換它!」),並且對象可以表示爲JSON或其他序列化方式。布爾值往往會被表示爲0/1或「on」/「」(對於複選框,最值得注意)。

您必須手動轉換您期望爲布爾值的值,這取決於它如何傳輸。

// 0 or 1 
$value = !! $_POST['value']; 
$value = (bool) $_POST['value']; 

// 'true' or 'false' 
$value = 'true' === $_POST['value']; 

// 'on' or '' 
$value = !! $_POST['value']; 
$value = 'on' === $_POST['value'];