解析 xhr.responseText | GTM 数据层推送
Posted
技术标签:
【中文标题】解析 xhr.responseText | GTM 数据层推送【英文标题】:Parsing xhr.responseText | GTM DataLayer Push 【发布时间】:2018-10-17 04:26:25 【问题描述】:我发现这个很棒的脚本可以将 JSON 收集到我网站的特定触发区域。
我想解析 xhr.responseText
以仅收集 ID_number
。
这是脚本:
<script>
(function()
var xhrSend = window.XMLHttpRequest.prototype.send;
window.XMLHttpRequest.prototype.send = function()
var xhr = this;
var intervalId = window.setInterval(function()
if(xhr.readyState != 4)
return;
dataLayer.push(
'event': 'ajaxSuccess',
'eventCategory': 'AJAX',
'eventAction': xhr.responseURL,
'eventLabel': xhr.responseText
);
clearInterval(intervalId);
, 1);
return xhrSend.apply(this, [].slice.call(arguments));
;
)();
</script>
【问题讨论】:
请提供xhr.responseText
中的示例
下面是@RandyCasburn:"status":"ok","ID_number":"YE513215"
这是我运行脚本时得到的数据结构。
首先用JSON解析responseText:let data = JSON.parse(xhr.responseText);
然后得到id:let id = data.ID_number
非常感谢!但我不确定如何以及在何处将其添加到代码中。你有机会帮助我吗?干杯!
【参考方案1】:
好吧,这其实很简单,信不信由你:)
您有某种文本形式的 JSON 响应:
"status":"ok","ID_number":"YE513215"
我们需要做的是把它变成一个 javascript 对象,这样我们就可以从中提取属性。 Javascript 内置 JSON 解析:
var response_object = JSON.parse(xhr.responseText);
然后我们可以得到id号:
var id_number = response_object.ID_number;
【讨论】:
@RandyCasburn 真的应该有办法把这个分配给你,因为你打败了我;)但我肯定会尝试的。 @Dave - 它看起来像我要找的东西。非常感谢!唯一的问题是我是一个完全的新手,我不确定如何以正确的方式编码。我试过了,但我得到了错误。 @Truststy 您将在何处添加此信息取决于您要对信息执行的操作。您上面包含的代码看起来像是修改了通常的 AJAX 请求以将更新发送到某种数据层,但它实际上并没有发出 AJAX 请求本身。老实说,如果你是这方面的新手,我不会尝试用直接的 javascript 处理 AJAX 请求,这是一个巨大的痛苦。相反,你可以使用 jQuery,它有很多辅助方法。 我想添加在 > 'eventLabel': ID_Number 上解析的信息。我会看看我能用这些信息做什么 - 非常感谢! 哦,好的!所以它应该像添加到你的dataLayer对象一样简单'eventLabel': JSON.parse(xhr.responseText)["ID_number"]
以上是关于解析 xhr.responseText | GTM 数据层推送的主要内容,如果未能解决你的问题,请参考以下文章