2

我知道每当我写作

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

输出将是:

Array('水果'=>'苹果', '蔬菜'=>'番茄', '面包'=>'小麦')

但是当我试图通过警报消息框显示它时,它什么也没显示。
我写的js alert代码如下:

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

这不起作用。当我为 $text 分配不同的字符串时,它可以工作。似乎 alert() 不喜欢 $t​​est 字符串的格式。如果我这样写:

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

我得到正确的输出。所以不确定那里有什么问题。

4

1 回答 1

6

要将 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>';
    }
    
于 2013-05-15T23:10:03.603 回答