在url data var中传递数组

时间:2013-09-16 15:45:25

标签: jquery arrays url

我试图通过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:意外的输入结束

有什么想法吗?

感谢。

2 个答案:

答案 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值进行解析,而是保留为   字符串。

Working fiddle