向Javascript函数传递php数组变量时出错



我试图将数组和输入的值从表单传递到javascript函数。$quotes是post的数组。

<form method="post">
<p>Search:<input type="text" name="qSearch" id="qSearch" 
size="40" value="" /></p>
<button type="button" onClick='searchQuotes(<?php echo json_encode($quotes); ?>, <?php echo json_encode($_POST["qSearch"]); ?>)'>
Submit
</button>
</form>

当我提交表单时,我在控制台上得到错误:(index):252 Uncaught SyntaxError: Invalid or unexpected token点击它会把我带到生成的HTML代码,它是:

<button type="button" onClick='searchQuotes([{"image":{"ID":9990,"Title-height":308}},"keywords":["General Leadership"]], "hats");'>

最后一个>下面有一个红色克拉

看起来它对数组的编码是正确的,但是我无法摆脱这个错误。这快把我逼疯了!什么好主意吗?

你的参数格式有问题

请参考我的代码:

<?php
$quotes = [
[
'name' => 'davis',
'age' => 18
],
[
'name' => 'davis',
'age' => 18
]
];
$_POST["qSearch"] = [
[
'name' => 'davis',
'age' => 18
],
[
'name' => 'davis',
'age' => 18
]
];
?>
<form method="post">
<p>Search:<input type="text" name="qSearch" id="qSearch"
size="40" value="" /></p>
<button type="button" onClick=searchQuotes({images:'<?php echo json_encode($quotes) ?>',keywords:'<?php echo json_encode($_POST['qSearch']) ?>',hats:'hats'}) >Submit</button>
</form>

js代码
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js" integrity="sha512-bLT0Qm9VnAYZDflyKcBaQ2gg0hSYNQrJ8RilYldYQ1FxQYoCLtUjuuRuZo+fjqhx/qtq/1itJ0C2ejDxltZVFg==" crossorigin="anonymous"></script>
<script type="text/javascript">
function searchQuotes(data) {
console.log(data);
}
</script>

查看代码,没有错误!

<button type="button" onClick=searchQuotes({images:'[{"name":"davis","age":18},{"name":"davis","age":18}]',keywords:'[{"name":"davis","age":18},{"name":"davis","age":18}]',hats:'hats'}) >Submit</button>

我最终只是将PHP变量放入javascript变量中,然后在我的代码中使用它,而不是将它传递给函数。这意味着我必须将脚本保存在页面上,而不是在另一个文件中,但它有效。出于某种原因,它就是不喜欢我通过它的方式。(我传递的只是一个字符串,所以没有问题)。

<script type="text/javascript">
function searchQuotes(keyword) {
var quote_array = <?php echo json_encode($quotes); ?>;
}
</script>

最新更新