【问题标题】:Parsing xhr.responseText | GTM DataLayer Push解析 xhr.responseText | GTM 数据层推送
【发布时间】: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
  • 非常感谢!但我不确定如何以及在何处将其添加到代码中。你有机会帮助我吗?干杯!

标签: javascript google-analytics google-tag-manager google-datalayer data-layers


【解决方案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"]
猜你喜欢
  • 1970-01-01
  • 2014-01-27
  • 2018-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多