基本上,我有一个有效的解决方案,但我想知道是否可以(应该?)以其他方式做得更好。
我有一个用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('&&');
});
脚本在&;并创建一个数组myData,其值为:
myData[0]=>从PHP 中的$l->_data1传递的值
myData[1]=>从PHP 中的$l->_data2传递的值
这样做对吗?
这很好,只要你永远不会有&;在您的数据中。您可以在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']);
}