我有一个名为func.js的javascript,因为有一个名为show
的函数需要2个参数,我需要做的是我想从php调用该函数,我不能这样做在这里使用任何click或onload事件我的脚本看起来像这样
<html>
<head></head>
<script type='text/javascript' src='path/to/func.js'></script>
<body>
some div etc
<form method='post' action="" >
.....
.....
</form>
</body>
</html>
<!-- after submit of form validation is in php -->
<?php
/* here I want to call javascript, where arguments are php variables
show('argument1','argument2'); */
// I tried to echo like this
echo "<script>show('$argument1',$argument2')</script>";
?>
那么我的案例的解决方案是什么?
答案 0 :(得分:1)
您拥有的代码应该可以工作...... 大多数。不幸的是,你没有告诉我们为什么它不起作用 - 是否有PHP错误?有JS错误吗? - 你没有向我们展示PHP输出的结果JavaScript或变量的内容,所以我们可以自己解决。
这个问题的两个最可能的解释(以及我目前唯一发生的解释)是:
变量包含无法在JavaScript字符串中出现的字符或必须在JavaScript字符串中转义的'
个字符。
JSON是JavaScript的一个充分子集,json_encode
函数将转义(并引用)大多数数据,因此它适合在JS中使用。
<script>
show(<?php echo json_encode($argument1); ?>, <?php echo json_encode($argument2); ?>)
</script>
您有一条HTML评论说“在提交表单验证后是在php中”,但您共享的代码中没有任何内容可以强制执行。
您需要在脚本生成周围包含if (isset($_POST['some_data_from_your_form'])) { ... }
之类的内容,以便它仅在提交表单时显示,而不是在最初加载时显示。
如果这不起作用,那么你真的需要查看变量是什么,生成的JS是什么,以及你的JavaScript错误控制台说的是什么。
HTML元素结束后不允许使用脚本元素。虽然浏览器将从该错误中恢复,但您确实应该将脚本移动到BODY内。
答案 1 :(得分:1)
它可能与参数内的数据有关,它是什么类型的数据?
echo "<script>show('".str_replace("'", "\'", $argument1)."', '".str_replace("'", "\'", $argument2)."')</script>";
如果您传递J'min
等信息,则会导致问题。数据有多行吗?然后需要过滤。
答案 2 :(得分:0)
首先,您的代码已损坏
<script type='text/javascript' href='path/to/func.js'</script>
您应该将href更改为src并关闭脚本标记,因此它变为
<script type='text/javascript' src='path/to/func.js'>
此外,javascript是客户端的,这意味着你无法在PHP中调用javascript函数。
我认为这里的一个好解决方案是使用AJAX调用来验证您的表单。
答案 3 :(得分:0)
您是否尝试将参数置于引号之外?
echo "<script>show('".$argument1."', '".$argument2."')</script>";
答案 4 :(得分:0)
echo '<script type="text/javascript">show(' . $argument1 . ',' . $argument2 . ');</script>';
上面的可能适合你。