我想为CakePHP 2.x中构建的基于Web的应用程序构建跟踪系统。我们的想法是将所有跟踪链接写成如下:
<a
href="#"
class="track-click"
data-tracking='{
"trackers": [
{
"tracker": "----",
"eventId": "---",
"tracking_options": {
"eventTargetUrl": "---",
"props": [{
"key": "----",
"value": "---"
}]
}
}
]
}'
/>
处理跟踪请求的javascript应该能够收集驻留在数据跟踪属性中的信息。这可以通过在onClick事件的“跟踪点击”类上附加点击事件来完成。
以下是我使用上述链接的方式:
$('.track-click').click(function(e){
//Lets grab the data thats within the data-tracking attribute and do something with it
var data = $(this).attr('data-tracking');
alert(data.trackers);
e.preventDefault();
});
目前,如果我提醒上述情况,我会得到不确定的。如果我在我的代码中放入$(this).attr('data-tracking')。val(),我会收到以下错误:
TypeError: $(...).attr(...).val is not a function
如上所示,操作具有json数据的链接的最佳方法是什么?
答案 0 :(得分:5)
您需要使用
var data = JSON.parse($(this).attr('data-tracking'));
这将返回对象。
否则你必须使用
var data = $(this).data('tracking');
.data()会返回对象。而.attr()将字符串化并返回该对象。
<强> DEMO 强>