2013-05-15 107 views
1

我知道,每當我寫如何在警報消息框中顯示print_r()內容?

$food = array('fruit'=>'apple', 'veggie'=>'tomato', 'bread'=>'wheat'); 
$text = print_r($food, true); 
echo $text; 

輸出將是:

陣列( '水果'=> '蘋果', '蔬菜'=> '番茄', '麪包' =>'小麥')

但是當我試圖通過警報消息框顯示這個,它不顯示任何東西。
爲JS警報的代碼,我寫如下:

echo "<script type='text/javascript'> alert('{$text}') </script>"; 

這是行不通的。當我給$ text分配一個不同的字符串時,它就可以工作。看起來像alert()不喜歡$ test字符串的格式。 如果我寫這樣:

echo "<script type='text/javascript'> alert('Array('fruit'=>'apple', 'veggie'=>'tomato', 'bread'=>'wheat')') </script>"; 

我得到正確的輸出。所以不知道那裏有什麼問題。

+0

請做一個查看源代碼和p ost腳本標記您的網頁包含。 –

+0

'alert(「{$ text}」)'也許 – 2013-05-15 22:55:14

+1

爲什麼地球上不會使用控制檯? alert()不是一個調試工具。 – adeneo

回答

3

要將PHP數組轉換爲javascript數組,您必須使用json_encode。 JSON(JavaScript Object Notation)是基於JavaScript的編程語言之間的數據交換格式。因爲JSON是文本格式,所以編碼的結果可以用作字符串或JavaScript對象。

$food = array('fruit'=>'apple', 'veggie'=>'tomato', 'bread'=>'wheat'); 

// show the array as string representation of javascript object 
echo "<script type='text/javascript'> alert('".json_encode($food)."') </script>"; 

// show the array as javascript object 
echo "<script type='text/javascript'> alert(".json_encode($food).") </script>"; 

// show the output of print_r function as a string 
$text = print_r($food, true); 
echo "<script type='text/javascript'> alert(".json_encode($text).") </script>"; 

用於調試的一些技巧:

  • 對JavaScript對象進行檢查,console.log是一個非常有用的
  • 如果你想有一個更清潔print_r輸出(Windows)的使用:

    function print_r2($val){ 
        echo '<pre>'.print_r($val, true).'</pre>'; 
    } 
    
+0

謝謝,它有效;) – Brian

相關問題