gpt4 book ai didi

php - 当用户单击输入按钮时,使用自定义 Javascript 和 pHp 向自己发送电子邮件,但仅适用于 Chrome、IE 和 Microsoft Edge

转载 作者:行者123 更新时间:2023-12-01 05:31:14 25 4
gpt4 key购买 nike

因此,每当用户单击其 Ultimate Member 表单的更新按钮时,我都会同时使用 jQuery 和 pHp 向自己发送电子邮件。但是,仅当用户使用 Chrome、IE 和 Microsoft Edge 时才会发送电子邮件。使用 Safari 和 Firefox 时,它不起作用。我正在使用单击事件监听器将 JSON 发送到我的 pHp 文件。 JSON 最初是一个由检查两个不同对象之间差异的函数创建的对象。这些对象是使用 DOM 遍历创建的。在该 pHp 文件中,有一个 mail() 函数,它将上述 JSON 发送到我的电子邮件中。我尝试在测试站点上复制该过程,并注意到当我没有添加点击监听器之前的 jQuery 时,电子邮件确实是从 Safari 和 Firefox 发送的。但是,如果我添加 jQuery 代码,然后删除它并再次测试,它不会发送!就好像我的服务器被永久拒绝一样。这是我的 JS 代码:

(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 上,页面会在电子邮件发出之前刷新。作为解决方法,我刚刚创建了另一个按钮,用户必须先单击该按钮,然后才能单击更新其个人资料信息的实际按钮。第一个按钮上的单击事件处理程序现在用于将信息发送到 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);

关于php - 当用户单击输入按钮时,使用自定义 Javascript 和 pHp 向自己发送电子邮件,但仅适用于 Chrome、IE 和 Microsoft Edge,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37194567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com