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

时间:2012-02-16 13:44:59

标签: php 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;&amp;和&amp;&amp;&amp;并使用值创建一个数组myData:

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

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

这是正确的方法吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

我认为你最好将整个连接的字符串传递给PHP并将其拆分。它可以节省您在两端的工作,必须将两个结果值放入正确的帖子或获取变量以发送给PHP。

然后在PHP方面,在拆分它之前验证一个值的格式要容易一些,因为你可以使用单个正则表达式:

// 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']);
}