将MYSQL/PHP表中的多个值传递给jQuery


Passing multiple values from MYSQL/PHP table to jQuery

基本上,我有一个有效的解决方案,但我想知道是否可以(应该?)以其他方式做得更好。

我有一个用PHP创建的表,其中包含MYSQL中的值。表中的每个项都有多个值。在每一行中都有一个链接,点击这个链接会启动jQuery函数。在每个链接中还有VALUE属性,该属性具有来自多个MYSQL字段的值,并与&:

PHP代码是:

    foreach ($this->_data as $l)
    {
        ?>
        ...
        <td><a href="#" class="clickMe" value="<?php echo $l->data1 . '&&' . $l->data2; ?>">Link</a></td>
        ...
        <?php
    }

当点击链接时,jQuery的功能是:

$(".clickMe").click(function() {
    myData = $(this).attr('value').split('&&');
});

脚本在&amp;并创建一个数组myData,其值为:

myData[0]=>从PHP 中的$l->_data1传递的值

myData[1]=>从PHP 中的$l->_data2传递的值

这样做对吗?

这很好,只要你永远不会有&amp;在您的数据中。您可以在PHP中使用json_encode(),然后在JavaScript中将其解码为数组。这将是一个更标准的解决方案。

我建议不要使用看起来像布尔AND的&&。相反,我可能会使用类似管道的东西来分离它们val1|val2

我认为您最好将整个连接的字符串传递到PHP并在那里进行拆分。它节省了您将两个结果值放入适当的post或获取要发送到PHP的变量的两端工作。

然后在PHP方面,在拆分之前验证一个值的格式会稍微容易一些,因为您可以使用一个regex,比如:

// Validate both values at once: 1 or more digits, a pipe, and one or more digits
if (preg_match('/^('d+)'|('d+)$/', $_POST['jqueryinput'])) {
  // explode() and use in PHP...
  list($val1, $val2) = explode("|", $_POST['jqueryinput']);
}