我了解到问题是我正在尝试将字符串数组传递给 JavaScript。
我不知道如何继续。
表格
<input type="hidden" name="id">
<input type="hidden" name="adProd">
数据库连接
$stmt = $conn->prepare("SELECT product_name, product_quantity, product_id FROM product ");
$stmt->execute();
// set the resulting array to associative
$result = $stmt->fetchAll(PDO::FETCH_OBJ);
foreach ($result as $v) {
echo "<td style='width:150px;border:1px solid black;'>";
echo "</td>";
echo '<tr>';
echo '<td>' .$v->product_name. "</td>";
echo '<td>' .$v->product_quantity. "</td>";
echo '<td>' .$v->product_id. "</td>";
下面的 product_id
完全正常工作。
echo '<td> <button type="submit" onclick="askForSell('.$v->product_id.')"> Sell </button> </td>';
另一方面,product_name
不起作用。
echo '<td> <button type="submit" onclick="askForBuy('.$v->product_name.')"> Buy </button> </td>';
JavaScript
form=document.getElementById("sellAndBuy");
工作正常:
function askForSell(id) {
form.action="sellProducts.php";
form['id'].value = id;
form.submit();
}
不起作用:
function askForBuy(adProd) {
form.action="buyProducts.php";
form['adProd'].value = adProd;
form.submit();
}
最佳答案
由于产品名称是字符串,因此您需要在 HTML 中为该名称添加额外的引号。您需要转义这些,因为您已经需要使用单引号和双引号:
echo '<td> <button type="submit" onclick="askForBuy(\''.$v->product_name.'\')"> Buy </button> </td>';
请注意添加的 \'
。
由于这些转义引号在更复杂的情况下可能会变得很麻烦,而且因为这是更好的做法,因此您应该考虑使用纯 JavaScript 代码绑定(bind)事件处理程序,而不是使用 onclick
HTML 属性。
关于javascript - PHP PDO - 将动态字符串数组传递给 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44422052/