我试图通过href链接的数据var传递一个数组:
<a href="#" class="edit" data-myvar="<?php echo json_encode($row); ?>">Test</a>
我正在使用Jquery来处理变量:
$(function(){
$('.edit').click(function(){
var res=jQuery.parseJSON($(this).data("myvar"));
console.log(res);
});
});
控制台日志说:Uncaught SyntaxError:意外的输入结束
有什么想法吗?
感谢。
答案 0 :(得分:1)
您永远不会声明变量:
var jQuery.parseJSON(res=$(this).data("myvar"));
^ Not how to declare a variable
应该是:
var res = jQuery.parseJSON($(this).data("myvar"));
答案 1 :(得分:1)
首先,在json_encode()
来电中应用htmlentities()
,以确保HTML中的所有引号都可以。
如果jQuery包含有效的JSON语法,jQuery已经为data-
属性进行了JSON解析。所以做以下是正确的方法:
// this will contain the JSON presentation of $row variable from PHP.
var res = $(this).data("myvar");
来自jQuery Docs:
每次尝试都将字符串转换为JavaScript值 (这包括布尔值,数字,对象,数组和null)。一个值 如果这样做不会更改值,则仅转换为数字 表示。例如,“1E02”和“100.000”等同于 数字(数值100)但转换它们会改变它们的数字 表示所以它们被保留为字符串。字符串值“100”是 转换为数字100。
当data属性是一个对象(以'{')或数组开头时 (以'['开头)然后jQuery.parseJSON用于解析字符串; 它必须遵循有效的JSON语法,包括引用的属性名称。如果 该值不能作为JavaScript值进行解析,而是保留为 字符串。