当用户单击输入按钮时,使用自定义Javascript和pHp向自己发送电子邮件,但仅适用于Chrome、IE和Micorosft Edge
因此,每当用户单击最终成员表单的更新按钮时,我都会使用jQuery和pHp向自己发送电子邮件。但是,电子邮件仅在用户使用Chrome、IE和Microsoft Edge时发送。当使用Safari和Firefox时,它不起作用。我使用点击事件监听器将JSON发送到我的pHp文件。JSON最初是一个对象,由一个检查两个不同对象之间差异的函数创建。这些对象是使用DOM遍历创建的。在这个pHp文件中有一个mail()函数,它将前面提到的JSON发送到我的电子邮件中。我曾尝试在一个测试站点上复制这个过程,并注意到当我没有在click listener之前添加jQuery时,电子邮件确实会从Safari和Firefox发送。但是,如果我添加jQuery代码,然后删除它并再次测试,它将不会发送!就好像我的服务器被永久拒绝一样。以下是我的JS代码:当用户单击输入按钮时,使用自定义Javascript和pHp向自己发送电子邮件,但仅适用于Chrome、IE和Micorosft Edge,php,jquery,wordpress,email,server,Php,Jquery,Wordpress,Email,Server,因此,每当用户单击最终成员表单的更新按钮时,我都会使用jQuery和pHp向自己发送电子邮件。但是,电子邮件仅在用户使用Chrome、IE和Microsoft Edge时发送。当使用Safari和Firefox时,它不起作用。我使用点击事件监听器将JSON发送到我的pHp文件。JSON最初是一个对象,由一个检查两个不同对象之间差异的函数创建。这些对象是使用DOM遍历创建的。在这个pHp文件中有一个mail()函数,它将前面提到的JSON发送到我的电子邮件中。我曾尝试在一个测试站点上复制这个过程,
(function($){
$(document).ready(function(){
console.log('mailajax is enqueued, showing on firefox');
var ogArray = new Array(),
newArray = new Array(),
dropOgArray = new Array(),
dropNewArray = new Array(),
difference,
username = $('.um-name').find('a').attr('title');
function diffObject(a, b) {
return Object.keys(a).reduce(function(map, k) {
if (a[k] !== b[k]) map[k] = b[k];
return map;
}, {});
}
$('input.um-form-field').each(function() {
var $key = $(this).closest('.um-field').find('label').text();
var $value = $(this).val();
ogArray[$key] = $value;
});
console.log(ogArray);
setTimeout(function(){
$('span.select2-chosen').each(function() {
var $key = $(this).closest('.um-field').find('label').text();
var $value = $(this).text();
// console.log($value);
dropOgArray[$key] = $value;
});
console.log(dropOgArray);
},1000);
$('input.um-form-field').on('keyup', function(){
$('form').find('input.um-form-field').each(function() {
var $key = $(this).closest('.um-field').find('label').text();
var $value = $(this).val();
newArray[$key] = $value;
});
console.log(newArray);
console.log(diffObject(ogArray, newArray));
difference = diffObject(ogArray, newArray);
});
$('select.um-form-field').on('change', function(){
setTimeout(function(){
$('form').find('span.select2-chosen').each(function() {
var $key = $(this).closest('.um-field').find('label').text();
var $value = $(this).text();
dropNewArray[$key] = $value;
});
console.log(diffObject(dropOgArray, dropNewArray));
dropDifference = diffObject(dropOgArray, dropNewArray);
}, 1000);
});
$('.um-profile-body .um-button').on('click', function(e) {
$('form').on('submit', function(){
console.log('form was sent successfully');
var ajaxurl = 'http://www.reformeducators.org/wp-content/themes/NATE/admin-ajax.php';
stringDifference = JSON.stringify(difference);
stringDropDifference = JSON.stringify(dropDifference);
stringUsername = String(username);
$.post(ajaxurl, {'Name': stringUsername, 'Changes Made': stringDifference, 'Drop Down Menu Changes': stringDropDifference});
});
});
});
})(jQuery);
下面是我的pHp代码:
<?php
$message = "User Information has been changed\r\n";
$message .= print_r($_POST, true);
$to = "testing@domain.com";
$subject = "User information has been changed!";
$headers = "From: ";
mail($to, $subject, $message, $headers);
?>
我认为这可能是服务器的问题,但如果有人有这样的经验,我会非常感谢您的反馈或帮助。因此,在Safari和Firefox上,页面会在发送电子邮件之前刷新。作为一种解决方法,我刚刚创建了另一个按钮,用户必须在单击更新其配置文件信息的实际按钮之前单击该按钮。第一个按钮上的click事件处理程序现在用于将信息发送到php文件。它解决了问题,现在无论用户从哪个浏览器更新他们的个人资料,我都会收到电子邮件 以下是javascript:
(function($){
$(document).ready(function(){
// console.log('mailajax is enqueued, showing on firefox');
setTimeout(function(){
if($('html').hasClass('user-section')){
// console.log('this is a user page');
$('input.um-button').hide();
$('.um-profile .um-col-alt .um-left.um-half').prepend('<a id="custom-update-btn">Approve Changes</a>');
}
var ogArray = new Array(),
newArray = new Array(),
dropOgArray = new Array(),
dropNewArray = new Array(),
difference,
username = String($('.um-name').find('a').attr('title'));
function diffObject(a, b) {
return Object.keys(a).reduce(function(map, k) {
if (a[k] !== b[k]) map[k] = b[k];
return map;
}, {});
}
$('input.um-form-field').each(function() {
var $key = $(this).closest('.um-field').find('label').text(),
$value = $(this).val();
ogArray[$key] = $value;
});
$('span.select2-chosen').each(function() {
var $key = $(this).closest('.um-field').find('label').text(),
$value = $(this).text();
dropOgArray[$key] = $value;
});
$('input.um-form-field').on('keyup', function(){
$('form').find('input.um-form-field').each(function() {
var $key = $(this).closest('.um-field').find('label').text(),
$value = $(this).val();
newArray[$key] = $value;
});
});
$('select.um-form-field').on('change', function(){
setTimeout(function(){
$('form').find('span.select2-chosen').each(function() {
var $key = $(this).closest('.um-field').find('label').text(),
$value = $(this).text();
dropNewArray[$key] = $value;
});
// console.log(diffObject(dropOgArray, dropNewArray));
}, 1000);
});
$('a#custom-update-btn').on('click', function(e){
// console.log('update btn has been clicked on');
var ajaxurl = 'http://www.reformeducators.org/wp-content/themes/NATE/admin-ajax.php',
stringDifference = JSON.stringify(diffObject(ogArray, newArray)),
stringDropDifference = JSON.stringify(diffObject(dropOgArray, dropNewArray));
$.post(ajaxurl, { 'Name': username, 'Changes Made': stringDifference, 'Drop Menu Changes': stringDropDifference});
$('a#custom-update-btn').hide();
$('.um-profile-body .um-button').show();
});
}, 1000);
});
})(jQuery);
(函数($){
$(文档).ready(函数(){
//log('mailajax已排队,显示在firefox上');
setTimeout(函数(){
if($('html').hasClass('user-section')){
//log(“这是一个用户页面”);
$('input.um button').hide();
$('.um profile.um col alt.um left.um half')。前置('Approve Changes');
}
var ogArray=新数组(),
newArray=新数组(),
dropOgArray=新数组(),
dropNewArray=新数组(),
区别,,
用户名=字符串($('.um name').find('a').attr('title'));
函数diffObject(a,b){
返回Object.keys(a).reduce(函数(map,k){
如果(a[k]!==b[k])映射[k]=b[k];
返回图;
}, {});
}
$('input.um表单字段')。每个(函数(){
var$key=$(this).closest('.um字段').find('label').text(),
$value=$(this.val();
ogArray[$key]=$value;
});
$('span.select2 selected')。每个(函数(){
var$key=$(this).closest('.um字段').find('label').text(),
$value=$(this.text();
dropOgArray[$key]=$value;
});
$('input.um form field')。在('keyup',function()上{
$('form').find('input.um form field').each(function()){
var$key=$(this).closest('.um字段').find('label').text(),
$value=$(this.val();
newArray[$key]=$value;
});
});
$('select.um form field')。在('change',function()上{
setTimeout(函数(){
$('form').find('span.select2 selected').each(function(){
var$key=$(this).closest('.um字段').find('label').text(),
$value=$(this.text();
dropNewArray[$key]=$value;
});
//log(diffObject(dropOgArray,dropNewArray));
}, 1000);
});
$('a#自定义更新btn')。在('click',函数(e)上{
//log('已单击更新btn');
var ajaxurl=http://www.reformeducators.org/wp-content/themes/NATE/admin-ajax.php',
stringDifference=JSON.stringify(diffObject(ogArray,newArray)),
stringDropDifference=JSON.stringify(diffObject(dropOgArray,dropNewArray));
$.post(ajaxurl,{'Name':用户名,'Changes':stringDifference,'Drop-Menu-Changes':stringDropDifference});
$('a#自定义更新btn').hide();
$('.um profile body.um button').show();
});
}, 1000);
});
})(jQuery);