javascript - PHP PDO - 将动态字符串数组传递给 JavaScript

标签 javascript php string forms pdo

我了解到问题是我正在尝试将字符串数组传递给 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/

相关文章:

将unicode字符串转换为C中对应的字符串

Javascript:通过数组映射后编辑变量

javascript - 不变失败 : You should not use <Switch> outside a <Router>

php - 在 Laravel Controller 的每个函数中传递用户信息

php - 正则表达式排除标题标签之间的内容

php - 使用 PHP 将 XML 发布到 URL 并处理响应

c# - 如何将字符串中的整数视为多位数字而不是单个数字?

javascript - 函数返回未在控制台中打印

javascript - 用于按顺序排列项目的替代输入控件

c++ - 将字符串存储在 constexpr 结构中