使用php和javascript进行编码和解码以及数据属性验证
Encoding and decoding with php and javascript and data attributes validation
我使用数据属性将数据从html发送到javascript
数据属性来自mysql数据,因此其中可能有空间,因此
我得到了验证错误,因为它说属性内部不允许有空间
因此,我认为if的解决方案是用php对值进行编码,使其没有空格
然后在传递给javascript后用javascript对其进行解码。这个有预制函数吗?一个故障保护的方式将是真棒:)
还有没有一种方法可以将值存储在数据属性中,同时在其中留出空间并进行验证?
空格应该不会有问题(想想style
属性:style="background-color: #F63;"
有一个空格,但仍然可以工作。然而,如果数据是使用ajax发送的,那么它很可能会被url编码(@Brad:urlencode
就是你的意思,我怀疑)。
由于您说数据来自SQL表,所以传递的数据本身可能存储在php中的对象或数组中。如果是这样的话,为什么不只是json_encode
的数据,并在javascript:JSON.parse(document.getElementById('theId').value);
中。这为您提供了一个JS中的对象,其中包含您所拥有的所有数据。如果只需要1个字符串,您可以通过将数据放在包装器数组中来使用json_encode
,并对其进行编码。。。
如果将其字符串连接到html:,请确保使用SINGLE引号
<?php
$dbArray = array('this', 'array', 'contains','your','data', 'with spaces');
$html= '<input type="hidden" id="hiddenArray" value='''.json_encode($dbArray).'''/>';
如果使用单引号,则元素的格式将不正确,因为json编码的数组中有双引号:
<input type="hidden" id="hiddenArray" value='["this","array","contains","your","data","with spaces"]' />
可能看起来不性感,但正如你所看到的,双引号会将元素值设置为[
。。。这不会剥夺空间,但也不会给你带来任何问题。
还有没有一种方法可以将值存储在数据属性中,同时在其中留出空间并进行验证?
只要确保引用属性值即可。
这是一个通过W3C验证器的有效文档。
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Data Attributes</title>
</head>
<body>
<h1 data-space="This value has a space in it">Data Attributes</h1>
</body>
</html>
如果您在PHP中使用类似htmlentities的东西对它们进行html编码,那么您可以使用unescape 在javascript中对它们进行解码
<?php
$value = htmlentities('hey you'); //hey%20you
然后在javascript 中
var value = unescape('hey%20you'); //hey you
- 序列化数据属性中对象的最可靠方法
- jQuery最近父级的数据属性选择器
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 数据属性仅在切换设备模式下工作
- 函数jquery.html()不提供数据属性集值
- 在数据属性上进行下拉自动选择
- JavaScript-获取数据属性的值返回未定义的值
- 如何替换数据属性中的特定字符串单词
- 使用数据属性将HTML数据复制到另一个元素
- 带有CSS的数据属性就没那么有用了
- 查找所有TD标签并读取其数据属性
- 使用jQuery获取第N个元素的数据属性值
- 使用自定义数据属性或将数据绑定到处理程序来处理事件
- 数据属性有没有更干净的方法
- 是否可以使用CSS分配数据属性
- 根据jquery数据属性值进行查询
- 使用jQuery在select选项上设置HTML数据属性
- 使用Javascript而不是html数据属性配置Parsley
- 使用php和javascript进行编码和解码以及数据属性验证
- decodeURIComponent不解码来自数据属性的字符串