jQuery's从HTML解析JSON不起作用
jQuery's parseJSON from HTML not working
尝试从HTML数据属性解析JSON时出错。这是我想要从解析JSON的div
echo '<div class="udropdown" data-elements=''{"option1" : "1", "option2" : "2" }''></div>';
这是jQuery部分(点击即可,因此$(this)
是必需的)
var ele = jQuery.parseJSON($(this).data('elements'));
但我一直收到这个错误:
未捕获的SyntaxError:意外的令牌
来自jQuery.data
:的文档
当数据属性是对象(以"{"开头)或数组(以"["开头)时,jQuery.parseJSON用于解析字符串;它必须遵循有效的JSON语法,包括带引号的属性名称。如果该值不能解析为JavaScript值,则将其保留为字符串。
$(this).data('elements')
将已经将字符串中的JSON解析为对象。
jQuery.parseJSON(object)
相当于jQuery.parseJSON(object.toString())
,它给了你jQuery.parseJSON("[object Object")
。
只需跳过手动parseJSON
步骤。jQuery已经为您完成了这项工作。
很可能您已经有一个解析过的对象了。在这种情况下,parseJSON
试图将您的输入视为字符串,只要它已经是一个对象,它就会被视为以下字符串:
[object Object]
或类似的。然后它认为符号[
是某个数组(它仍然是一个有效的JSON)的开头,而o
正是它所不期望的,因为它必须是一个数字、布尔值,或者是'
、"
或{
中的一个。
只需检查$(this).data('elements')
的数据类型-它必须是一个对象。
尝试以下操作:
JSON.parse({})
将返回完全相同的错误。
$(this).data('elements')
返回一个对象,这样您就不必解析任何内容,只需使用返回的ele
,例如:
$('.udropdown').click(function(){
var ele = $(this).data('elements');
console.log(ele.option1, ele.option2);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="udropdown" data-elements='{"option1" : "1", "option2" : "2" }'>Click HERE</div>
相关文章:
- Javascript和Firefox中基于jQuery的HTML解析:无法解释行为
- 如何使用简单的html解析器或其他东西获取值
- HTML 解析和方法调用
- HTML 解析中的正则表达式
- 如何在 JavaScript 中制作 HTML 解析器
- 将 gulp 与捆绑包一起使用时出错 - HTML 解析错误
- 使用正则表达式进行 HTML 解析的替代方案
- JSP聊天-如何将值从HTML解析为JSP页面
- J汤html解析样式=“;显示:无;不要显示链接
- jQuery将html解析为JSON
- 将HTML解析为特定的JSON对象
- 利用jQuery Selector来简化HTML解析器代码
- JavaScript中严格的HTML解析
- 在HTML解析器中保留htl和body标记
- jQuery's从HTML解析JSON不起作用
- jQuery HTML解析器删除一些标签没有警告,为什么和如何防止它
- 由于某些原因,页面上的自定义html标签会跳过html解析
- 创建一个正则表达式来将html解析为MXML语法
- 从api获取json数据->将属性中的html解析为新的对象结构
- Javascript中的HTML解析器