我有一个名为func.js的javascript,因为有一个函数名为show
,它有两个参数,我需要做的是我想从php调用该函数,我不能在这里使用任何点击或加载事件,我的脚本看起来像这个
<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>";
?>
那么,我的案子有什么解决方案呢?
您拥有的代码应该在大多数情况下都能工作。不幸的是,您没有告诉我们为什么它不起作用-是否存在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中。
这可能与参数中的数据有关,它是什么类型的数据?
echo "<script>show('".str_replace("'", "''", $argument1)."', '".str_replace("'", "''", $argument2)."')</script>";
如果您正在传递J'min
之类的信息,则会导致问题。数据是否有多行?然后需要对其进行过滤。
首先,您的标签已损坏
<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调用来验证您的表单。
你试过把参数放在引号之外吗?
echo "<script>show('".$argument1."', '".$argument2."')</script>";
echo '<script type="text/javascript">show(' . $argument1 . ',' . $argument2 . ');</script>';
以上内容可能对您有用。