将php对象传递给javascript函数
我想知道是否可以通过html将php对象/数组从数据库发送到javascript函数 以下是我试图实现的目标:将php对象传递给javascript函数,javascript,php,html,Javascript,Php,Html,我想知道是否可以通过html将php对象/数组从数据库发送到javascript函数 以下是我试图实现的目标: <?php $test = array('Apple', 'Banana', 'Lemon'); ?> <a href="javascript:;" onclick="myfuntion(<?php echo json_encode($test) ?>);">Send object</a> <script type="text/
<?php
$test = array('Apple', 'Banana', 'Lemon');
?>
<a href="javascript:;" onclick="myfuntion(<?php echo json_encode($test) ?>);">Send object</a>
<script type="text/javascript">
function myfuntion(test)
{
console.log("What is first fruit: "+test[0]);
}
</script>
我错过了什么?希望提前得到帮助和感谢:-)您正在做正确的事情,唯一缺少的是,您需要将传递的参数用括号括起来,如下所示
<a href="javascript:;"
onclick="myfuntion('<?php echo json_encode($test) ?>');">Send object</a>
因为您的代码将在参数中回显json编码的值/字符串(字符串必须在双引号中的单引号内),函数参数必须用括号括起来。但若它是数字,那个么它将起作用,但当你们处理对象和数组时,你们必须把它们括在'
中
在您的js代码中,只需使用
JSON.parse
方法将该参数解析为JSON
。您正在做正确的事情,唯一缺少的是,您需要将传递的参数括在括号中,如下所示
<a href="javascript:;"
onclick="myfuntion('<?php echo json_encode($test) ?>');">Send object</a>
因为您的代码将在参数中回显json编码的值/字符串(字符串必须在双引号中的单引号内),函数参数必须用括号括起来。但若它是数字,那个么它将起作用,但当你们处理对象和数组时,你们必须把它们括在'
中
在js代码中,只需使用
JSON.parse
方法将该参数解析为JSON
。而不是像这样在js中直接使用$test array JSON传递函数
<?php
$test = array('Apple', 'Banana', 'Lemon');
?>
<a href="javascript:;" onclick="myfuntion();">Send object</a>
<script type="text/javascript">
function myfuntion()
{
var test = <?php echo json_encode($test); ?>;
for(var i=0; i<test.length; i++){
console.log("What is first fruit: "+test[i]);
}
}
</script>
函数myfuntion()
{
var检验=;
对于(var i=0;i而不是传入函数,直接在js中使用$test array json,如下所示
<?php
$test = array('Apple', 'Banana', 'Lemon');
?>
<a href="javascript:;" onclick="myfuntion();">Send object</a>
<script type="text/javascript">
function myfuntion()
{
var test = <?php echo json_encode($test); ?>;
for(var i=0; i<test.length; i++){
console.log("What is first fruit: "+test[i]);
}
}
</script>
函数myfuntion()
{
var检验=;
对于(var i=0;i,myfunition中的PHP代码缺少括号
<a href="javascript:;" onclick="myfuntion(<?php echo json_encode($test) ?>);">Send object</a>
MyFunction中的PHP代码缺少括号
<a href="javascript:;" onclick="myfuntion(<?php echo json_encode($test) ?>);">Send object</a>
要避免引号冲突,只需将json作为对象存储在某处:
<?php
$test = array('Apple', 'Banana', 'Lemon');
?>
<a href="javascript:;" onclick="myfuntion();">Send object</a>
<script type="text/javascript">
var data = <?php echo json_encode($test) ?>;
function myfuntion()
{
console.log("What is first fruit: "+data[0]);
}
</script>
var数据=;
函数myfuntion()
{
log(“第一个水果是什么:+data[0]);
}
或者使用参数:
<?php
$test = array('Apple', 'Banana', 'Lemon');
?>
<script type="text/javascript">
var data = <?php echo json_encode($test) ?>;
</script>
<a href="javascript:;" onclick="myfuntion(data);">Send object</a>
<script type="text/javascript">
function myfuntion(jsonObj)
{
console.log("What is first fruit: "+jsonObj[0]);
}
</script>
var数据=;
函数MyFunction(jsonObj)
{
log(“什么是第一个水果:+jsonObj[0]);
}
要避免引号冲突,只需将json作为对象存储在某处:
<?php
$test = array('Apple', 'Banana', 'Lemon');
?>
<a href="javascript:;" onclick="myfuntion();">Send object</a>
<script type="text/javascript">
var data = <?php echo json_encode($test) ?>;
function myfuntion()
{
console.log("What is first fruit: "+data[0]);
}
</script>
var数据=;
函数myfuntion()
{
log(“第一个水果是什么:+data[0]);
}
或者使用参数:
<?php
$test = array('Apple', 'Banana', 'Lemon');
?>
<script type="text/javascript">
var data = <?php echo json_encode($test) ?>;
</script>
<a href="javascript:;" onclick="myfuntion(data);">Send object</a>
<script type="text/javascript">
function myfuntion(jsonObj)
{
console.log("What is first fruit: "+jsonObj[0]);
}
</script>
var数据=;
函数MyFunction(jsonObj)
{
log(“什么是第一个水果:+jsonObj[0]);
}
这是因为json\u encode
生成的字符串包含双引号,并且与onclick=“…”
尝试用htmlspecialchars
这是因为json\u encode
生成的字符串包含双引号,并且与onclick=“…”
尝试用htmlspecialchars
将行更改为
将行更改为将发送JSON字符串而不是JS对象的
:/@Dipesh Parmar好的,更改了您现在建议的内容此错误:未捕获的语法错误:无效或意外的令牌,myfunction('[@u_mulder编辑了答案,但我向他表明了这一点,而不是为OP编写所有代码,因为我提到它将是json编码的值/字符串,所以稍后他所需要做的就是在js代码上解析它。实际上,正如Anggara所建议的,只是改变了这一点,它起了作用:-)这将发送JSON字符串而不是JS对象:/@Dipesh Parmar好吧,更改了您现在建议的错误:未捕获的语法错误:无效或意外的标记,myfunction('[@u_mulder编辑了答案,但我向他表明了这一点,而不是为OP编写所有代码,因为我提到它将是json编码的值/字符串,所以稍后他所需要做的就是在js代码上解析它。实际上,正如Anggara所建议的,只是改变了这一点,它起了作用:-)