【问题标题】:Getting an error passing a php array variable to Javascript function将 php 数组变量传递给 Javascript 函数时出错
【发布时间】:2021-01-21 02:44:46
【问题描述】:

我正在尝试将数组和输入值从表单传递到 javascript 函数。 $quotes 是一个帖子数组。

<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");'>

最后一个&gt;下方有一颗红克拉

看起来它正确地编码了数组,但我无法摆脱这个错误。这让我发疯!有什么想法吗?

【问题讨论】:

  • 您在searchQuotes(... onclick 函数的末尾缺少)
  • 就像@Darren 说的......同样}}, "keywords":[ 是无效JSON 的开始。您在 "keywords": 之前关闭了 Object,这需要在 Object 中,但现在不在。
  • @Darren,这是一个复制和粘贴错误,它实际上是在真实代码中。我在上面的例子中修复了它。仍然有同样的错误。
  • @StackSlave,我将两件事传递给函数 - 第一个变量是一个包含两个项目的数组,第一个是一个对象 (image),它有两个对象 (ID and TItle-height),然后是一个数组关键字,然后第二个变量是字符串(hats)。这就是json_encode 编码我的变量quotes 的方式。那么有没有其他方法可以将这个PHP变量传递给js函数呢?

标签: javascript php html forms


【解决方案1】:

你的参数格式有问题

请参考我的代码:

<?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>

【讨论】:

【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    相关资源
    最近更新 更多