gpt4 book ai didi

javascript - 在按钮的onclick属性中传递php数组并在javascript中读取它

转载 作者:行者123 更新时间:2023-11-29 23:21:59 25 4
gpt4 key购买 nike

我正在使用 ajax 将数据添加到表中。在按钮的 onclick 属性中,我调用了一个包含 idname 作为前两个参数的函数,其中 第三个参数 是 <返回数组的strong>函数调用。

现在的问题是前两个参数已成功传递给 javascript 函数,但第三个参数(数组)没有传递给 javascript 函数。

我如何将 php 数组作为参数传递给 javascript 函数,它可以在 javascript 函数中访问,如 array[0],数组 1 基于其中的值的数量。请帮忙。

PHP 文件:

function allSizes($product_id)
{
include("../../include/config.php");

$allSizes = array();

$products_extra_search = mysqli_query($link,"SELECT product_size from products_extra WHERE product_id = $product_id");
while($products_extra_data = mysqli_fetch_array($products_extra_search))
{
$products_extra_size_id = $products_extra_data['product_size'];

//getting size
$product_size_search = mysqli_query($link,"SELECT size from products_size WHERE id = $products_extra_size_id");
$products_size_data = mysqli_fetch_array($product_size_search);

$allSizes[] = $products_size_data["size"];
}

return json_encode($allSizes);
}

$output = '';

$search = mysqli_query($link,"SELECT * from products ORDER BY id DESC;");

while($data = mysqli_fetch_array($search))
{
$output .= '<tr><td>
<a class="btn btn-primary" role="button" onclick="ProductExtraModal(`'.$data['id'].'`,`'.$data['name'].'`,`'.allSizes($data['id']).'`)"></a>
</td></tr>';
}

echo $output;

单击按钮时调用的 Javascript 函数:

function ProductExtraModal(id,name,size)
{
alert(id);
alert(name);
console.log(size); /*Not Working*/
}

编辑:

HtmHell 后答案输出看起来像

enter image description here

预期输出:

enter image description here

PHP数组在浏览器中的输出:

enter image description here

因为我有六种产品,只有第一种有两种尺寸。有人可以帮忙吗?

最佳答案

你传递了一个 json 对象,所以你不应该用任何撇号将它包裹起来。

它应该是这样的:

<?php
$output = '<tr><td>
<a class="btn btn-primary" role="button" onclick="ProductExtraModal(`'.$data['id'].'`,`'.$data['name'].'`,'.allSizes($data['id']).')"></a>
</td></tr>';

问题是,json 将包含 ",因此它会破坏 HTML 的属性包装器。

最终的解决方案是这样的:

<script>
// put this outside the loop
var allSizes = {};
</script>
<?php
$output = '<tr><td>
<script>allSizes[' . $data['id'] . '] = ' . allSizes($data['id']) . ';</script>
<a class="btn btn-primary" role="button" onclick="ProductExtraModal(`'.$data['id'].'`,`'.$data['name'].'`,allSizes[' . $data['id'] . '])"></a>
</td></tr>';

或者转义撇号。

编辑

根据您的评论,您还有另一个问题:您没有获得预期的数组。

我猜这是因为在您的 allSizes 函数中您没有遍历 $product_size_search,并且您只调用了一次 mysqli_fetch_array

改用这段代码,遍历所有产品尺寸:

function allSizes($product_id)
{
include("../../include/config.php");

$allSizes = array();
$extraDataIds = array();

$products_extra_search = mysqli_query($link,"SELECT product_size from products_extra WHERE product_id = $product_id");

while ($products_extra_data = mysqli_fetch_array($products_extra_search)) {
$extraDataIds[] = $products_extra_data['product_size'];
}

$product_size_search = mysqli_query($link,"SELECT size from products_size WHERE id IN (" . implode(",", $extraDataIds) . ") GROUP BY size");

while ($products_size_data = mysqli_fetch_array($product_size_search)) {
$allSizes[] = $products_size_data["size"];
}

return json_encode($allSizes);
}

关于javascript - 在按钮的onclick属性中传递php数组并在javascript中读取它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50349387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com