通过 ajax 方法 GET 将 google 标签管理器结果发送到 php 页面
send google tag manager results to php page via ajax method GET
我在我的网站上得到了一些变量,我将它们推送到 GTM 它们工作完美,现在我需要从 gtm 获取变量结果并通过 ajax 将其发送到 php 页面,然后我会用它把结果发到电子邮件中。
<script>
$(document).ready( function() {
var msg = google_tag_manager["GTM-xxxxx"].dataLayer.get('pageName');
var msg1 = google_tag_manager["GTM-xx"].dataLayer.get('MembershipLvl');
var msg2 = google_tag_manager["GTM-xx"].dataLayer.get('CountryRes');
var msg3 = google_tag_manager["GTM-xxxx"].dataLayer.get('pageLanguage');
var getall = [msg, msg1, msg2, msg3,];
// var me = 'just seend'; this do work
console.log(getall);
$.ajax({
type: "GET",
url: "url.cart.php", // some php
data:{info: getall},
datatype: 'html',
success: function(data) {}
});
});
这是我的 php
<?php
/*
*
*/
send_mail();
函数send_mail(){
如果($_GET["info"]){
$mail = $_GET["info"];
$header ="From: no-reply@test.com" . "\r\n";
$for = 'end@emailadaress.com';
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$title = 'Mailing list Newsletter';
$message = '<html><body>';
$message .= '<br/> <p>tou got email from</p><br/>';
$message .= '<table rules="all" style="border-color: #666;" cellpadding="2">';
$message .= "<tr><td><strong>Email:</strong> </td><td>" . strip_tags($mail)."</td></tr>";
$message .= "</table>";
$message .= "</body></html>";
if(mail($for, $title, $message, $header)){
die();
}else{
//echo "false";
}
}else{
echo "false";
}
}
?>
问题是我没有收到发送的 GTM 变量,我确实在控制台日志中看到了它们,如果我更改像 var = test 这样的变量,我确实收到了,但我就是无法收到发送的 GTM 变量
所以问题是 $_GET["info"]
包含一个 strip_tags 无法处理的数组。如果您查看呼叫的响应,它应该有一个 PHP 错误。沿线某处: Warning: strip_tags() expects parameter 1 to be string, array given.如果你想从数组中获取值,你可以构建一个循环或引用特定的索引。
循环
foreach ($mail as $gtm) {
$message .= $gtm;
}
索引
$message .= $mail[0] // google_tag_manager["GTM-xxxxx"].dataLayer.get('pageName');
$message .= $mail[1] // google_tag_manager["GTM-xx"].dataLayer.get('MembershipLvl');
等...
PHP strip tags
Foreach loop
How to view a ajax call in chrome
我在我的网站上得到了一些变量,我将它们推送到 GTM 它们工作完美,现在我需要从 gtm 获取变量结果并通过 ajax 将其发送到 php 页面,然后我会用它把结果发到电子邮件中。
<script>
$(document).ready( function() {
var msg = google_tag_manager["GTM-xxxxx"].dataLayer.get('pageName');
var msg1 = google_tag_manager["GTM-xx"].dataLayer.get('MembershipLvl');
var msg2 = google_tag_manager["GTM-xx"].dataLayer.get('CountryRes');
var msg3 = google_tag_manager["GTM-xxxx"].dataLayer.get('pageLanguage');
var getall = [msg, msg1, msg2, msg3,];
// var me = 'just seend'; this do work
console.log(getall);
$.ajax({
type: "GET",
url: "url.cart.php", // some php
data:{info: getall},
datatype: 'html',
success: function(data) {}
}); });
这是我的 php
<?php
/*
*
*/
send_mail();
函数send_mail(){ 如果($_GET["info"]){
$mail = $_GET["info"];
$header ="From: no-reply@test.com" . "\r\n";
$for = 'end@emailadaress.com';
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$title = 'Mailing list Newsletter';
$message = '<html><body>';
$message .= '<br/> <p>tou got email from</p><br/>';
$message .= '<table rules="all" style="border-color: #666;" cellpadding="2">';
$message .= "<tr><td><strong>Email:</strong> </td><td>" . strip_tags($mail)."</td></tr>";
$message .= "</table>";
$message .= "</body></html>";
if(mail($for, $title, $message, $header)){
die();
}else{
//echo "false";
}
}else{
echo "false";
}
}
?>
问题是我没有收到发送的 GTM 变量,我确实在控制台日志中看到了它们,如果我更改像 var = test 这样的变量,我确实收到了,但我就是无法收到发送的 GTM 变量
所以问题是 $_GET["info"]
包含一个 strip_tags 无法处理的数组。如果您查看呼叫的响应,它应该有一个 PHP 错误。沿线某处: Warning: strip_tags() expects parameter 1 to be string, array given.如果你想从数组中获取值,你可以构建一个循环或引用特定的索引。
循环
foreach ($mail as $gtm) {
$message .= $gtm;
}
索引
$message .= $mail[0] // google_tag_manager["GTM-xxxxx"].dataLayer.get('pageName');
$message .= $mail[1] // google_tag_manager["GTM-xx"].dataLayer.get('MembershipLvl');
等...
PHP strip tags
Foreach loop
How to view a ajax call in chrome