如何将php数组作为参数传递给外部js函数

时间:2015-04-19 10:32:19

标签: php

我有样本数组$arr,如下所示。当我们点击按钮时,将调用函数user_info()并将此数组传递给ajax request.my脚本看起来像

<?php 
   $arr = array(
            array(
               "first_name" => "Darian",
               "last_name" => "Brown",
               "age" => "28",
               "email" => "darianbr@example.com"
          ),
         array(
              "first_name" => "John",
              "last_name" => "Doe",
              "age" => "47",
              "email" => "john_doe@example.com"
         )
      );

   $encoded =json_encode($arr);

?>

<button onclick="user_info()">click here</button>
<div id="result_view"></div>

我的js功能

  function user_info()
  {   
    var my_arr = '<?php echo $encoded; ?>';
    var data='';
    $.ajax({
        data: {arr: my_arr},
        type: 'POST',
        url: site_url+'admin/profile/users/',
        success: function(response)
        {
            var JSONObject = $.parseJSON(response); 
            for (var key in JSONObject) {
                if (JSONObject.hasOwnProperty(key)) {
                   data += (JSONObject[key]["first_name"] + ", " + JSONObject[key]["age"])+"<br/>";
                }
              }
            $('#result_view').html(data);               
          }
      }); 
    }

我的php codejs function位于同一个php文件中并且正在运行。现在我想将此js function放到我的外部js文件中。我需要将我的数组作为函数调用的参数传递。我试图将数组作为像

这样的参数传递
<button onclick="user_info(<?php echo $encoded;?>)">click here</button>

我的外部js函数看起来像这样

function user_info(my_arr)
{
 ...
}

但它没有用。 如何将我的数组作为外部函数调用的参数传递?我将不胜感激任何帮助。谢谢。

4 个答案:

答案 0 :(得分:1)

HTML文件

<script>
    var enc = <?php echo $encoded;?>;
</script>
<button onclick="user_info()">click here</button>

外部JS文件

function user_info()
{
    ...
    //use enc var here
    ...
}

确保在小脚本标记之后包含外部JS文件。

答案 1 :(得分:1)

在数组中使用单引号以防止与html属性中的双引号冲突。 e.g。

   array(
               'first_name' => 'Darian',
               'last_name' => 'Brown',
               'age' => '28',
               'email' => 'darianbr@example.com'
          )

答案 2 :(得分:1)

将其作为字符串传递

<button onclick="user_info('<?php echo $encoded;?>')">click here</button>

答案 3 :(得分:1)

你不应该在<?php echo $encoded ?>附近加上引号。那是创建一个字符串而不是一个对象。所以它应该是:

var my_arr = <?php echo $encoded; ?>;