我有样本数组$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 code
和js function
位于同一个php文件中并且正在运行。现在我想将此js function
放到我的外部js
文件中。我需要将我的数组作为函数调用的参数传递。我试图将数组作为像
<button onclick="user_info(<?php echo $encoded;?>)">click here</button>
我的外部js函数看起来像这样
function user_info(my_arr)
{
...
}
但它没有用。 如何将我的数组作为外部函数调用的参数传递?我将不胜感激任何帮助。谢谢。
答案 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; ?>;