解析 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 数据层推送的主要内容,如果未能解决你的问题,请参考以下文章

XMLHttpRequest responseText到arrayBuffer,unicode U + FFFD

javaScript 解析xml 内容.

JS长轮询

ajax技术整理总结

Ajax与Layui

F5 GTM人为错误添加域名导致智能解析失效