Javascript jQuery/JS正在设置全局变量,但一直无法传递到AJAX自定义函数
我正在尝试设置一些全局变量,但有点陷入了如何启动自定义函数的困境,该函数使用数据执行AJAX请求,我在一个函数和其他事件中收集电子邮件,还有firstname和lastname,但我现在陷入了困境 我没有给fireCheckoutAC打过电话,因为这是我一直坚持的。我不熟悉jQuery和JS,但我想我已经尽了最大的努力Javascript jQuery/JS正在设置全局变量,但一直无法传递到AJAX自定义函数,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在尝试设置一些全局变量,但有点陷入了如何启动自定义函数的困境,该函数使用数据执行AJAX请求,我在一个函数和其他事件中收集电子邮件,还有firstname和lastname,但我现在陷入了困境 我没有给fireCheckoutAC打过电话,因为这是我一直坚持的。我不熟悉jQuery和JS,但我想我已经尽了最大的努力 // set global variables var checkoutEmail = ""; var checkoutFirstName = ""; var checkoutL
// set global variables
var checkoutEmail = "";
var checkoutFirstName = "";
var checkoutLastName = "";
$(document).ready(function() {
function fireCheckoutAC(checkoutEmail, checkoutFirstName, checkoutLastName) {
$.ceAjax('request', fn_url('ac.email'), {
method: 'post',
data: {
'email': checkoutEmail,
'firstname': checkoutFirstName,
'lastname': checkoutLastName
},
caching: true
});
}
// function to check email field, validate and save to ac for this customer session
function checkIt(field) {
field = $(field);
var email = field.val();
var emailError = "<p>The email address in the <b>E-mail</b> field is invalid.</p>";
var emailInputId = field.attr('id');
if ($("." + emailInputId + "_error_message").length > 0) {
$("." + emailInputId + "_error_message").remove();
}
//console.log($(emailInputId+"_error_message"));
if (validEmail(email)) {
//alert('valid email');
checkoutEmail = email;
field.removeClass('cm-failed-field');
field.prev().removeClass('cm-failed-label');
field.next("span").remove();
} else {
field.addClass('cm-failed-field');
field.prev().addClass('cm-failed-label');
field.after("<span class='" + emailInputId + "_error_message help-inline' ><p>" + emailError + "</p></span>");
}
}
// lets check if the email input was already populated, such as browser auto fill etc.. if so use that and save
var field = $('#onestepcheckout .ty-billing-email input')[0];
if ($(field).length > 0) {
if (field.value) {
checkIt(field);
}
}
// check email thats inputted and save to ac session for this customer, or if email changed to update
$('#onestepcheckout .ty-billing-email input').blur(function() {
checkIt(this);
});
// if first name entered lets grab it and add to the ac session for the customer
var firstname_sel = '#onestepcheckout .ty-billing-first-name input';
var lastname_sel = '#onestepcheckout .ty-billing-last-name input';
$(firstname_sel+','+lastname_sel).blur(function() {
checkoutFirstName = $(firstname_sel).val();
checkoutLastName = $(lastname_sel).val();
});
// lets grab the first name and last name if already in input
var firstname_sel_pre = $('#onestepcheckout .ty-billing-first-name input')[0];
var lastname_sel_pre = $('#onestepcheckout .ty-billing-last-name input')[0];
if ($(firstname_sel_pre).length > 0 || $(lastname_sel_pre).length > 0) {
if (firstname_sel_pre.value || lastname_sel_pre.value) {
checkoutFirstName = $(firstname_sel_pre).val();
checkoutLastName = $(firstname_sel_pre).val();
}
}
});
//设置全局变量
var checkoutEmail=“”;
var checkoutFirstName=“”;
var checkoutLastName=“”;
$(文档).ready(函数(){
函数fireCheckoutAC(checkoutEmail、checkoutFirstName、checkoutLastName){
$.ceAjax('request',fn_url('ac.email'){
方法:“post”,
数据:{
“电子邮件”:checkoutEmail,
“firstname”:checkoutFirstName,
“lastname”:checkoutLastName
},
缓存:true
});
}
//用于检查电子邮件字段、验证并保存到此客户会话的ac的功能
功能检查(字段){
字段=$(字段);
var email=field.val();
var emailError=“电子邮件字段中的电子邮件地址无效。”;
var emailInputId=field.attr('id');
if($(“+emailInputId+”\u错误\u消息”).length>0){
$(“+emailInputId+”\u错误消息”).remove();
}
//log($(emailInputId+“\u错误\u消息”);
如果(有效邮件(电子邮件)){
//警报(“有效电子邮件”);
checkoutEmail=电子邮件;
field.removeClass('cm-failed-field');
field.prev().removeClass('cm-failed-label');
字段.next(“span”).remove();
}否则{
field.addClass('cm-failed-field');
field.prev().addClass('cm-failed-label');
字段。在(“”+emailError+“”)之后;
}
}
//让我们检查电子邮件输入是否已填充,如浏览器自动填充等。如果已填充,请使用该选项并保存
var字段=$('#onestepcheckout.ty计费电子邮件输入')[0];
如果($(字段).length>0){
if(字段值){
选中它(字段);
}
}
//检查输入的电子邮件并保存到此客户的ac会话,或者电子邮件是否更改为更新
$('#onestepcheckout.ty计费电子邮件输入').blur(函数(){
检查(这个);
});
//如果输入了名字,让我们抓取它并添加到客户的ac会话中
var firstname_sel='#onestepcheckout.ty账单名字输入';
var lastname_sel='#onestepcheckout.ty计费姓氏输入';
$(firstname_sel+,'+lastname_sel).blur(函数(){
checkoutFirstName=$(firstname_sel).val();
checkoutLastName=$(lastname_sel).val();
});
//如果输入中已经有名字和姓氏,让我们抓取
var firstname_sel_pre=$(“#onestepcheckout.ty账单名字输入”)[0];
var lastname_sel_pre=$('#onestepcheckout.ty billing last name input')[0];
如果($(firstname_sel_pre).length>0 | |$(lastname_sel_pre).length>0){
if(firstname_sel_pre.value | | lastname_sel_pre.value){
checkoutFirstName=$(firstname_sel_pre).val();
checkoutLastName=$(firstname_sel_pre).val();
}
}
});
设法解决了这个问题,下面是其他想知道的人的解决方案。。。只需调用处理全局变量的ajax函数
/* grab completed email when enetred into checkout and add to abandoned cart
for that session */
function validEmail(v) {
var r = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
return (v.match(r) == null) ? false : true;
}
// set global variables
var checkoutEmail = "";
var checkoutFirstName = "";
var checkoutLastName = "";
$(document).ready(function() {
function fireCheckoutAC() {
$.ceAjax('request', fn_url('ac.email'), {
method: 'post',
data: {
'email': checkoutEmail,
'firstname': checkoutFirstName,
'lastname': checkoutLastName
},
caching: true
});
}
// function to check email field, validate and save to ac for this customer session
function checkIt(field) {
field = $(field);
var email = field.val();
var emailError = "<p>The email address in the <b>E-mail</b> field is invalid.</p>";
var emailInputId = field.attr('id');
if ($("." + emailInputId + "_error_message").length > 0) {
$("." + emailInputId + "_error_message").remove();
}
//console.log($(emailInputId+"_error_message"));
if (validEmail(email)) {
//alert('valid email');
checkoutEmail = email;
fireCheckoutAC();
field.removeClass('cm-failed-field');
field.prev().removeClass('cm-failed-label');
field.next("span").remove();
} else {
field.addClass('cm-failed-field');
field.prev().addClass('cm-failed-label');
field.after("<span class='" + emailInputId + "_error_message help-inline' ><p>" + emailError + "</p></span>");
}
}
// lets check if the email input was already populated, such as browser auto fill etc.. if so use that and save
var field = $('#onestepcheckout .ty-billing-email input')[0];
if ($(field).length > 0) {
if (field.value) {
checkIt(field);
}
}
// check email thats inputted and save to ac session for this customer, or if email changed to update
$('#onestepcheckout .ty-billing-email input').blur(function() {
checkIt(this);
});
// if first name entered lets grab it and add to the ac session for the customer
var firstname_sel = '#onestepcheckout .ty-billing-first-name input';
var lastname_sel = '#onestepcheckout .ty-billing-last-name input';
$(firstname_sel+','+lastname_sel).blur(function() {
checkoutFirstName = $(firstname_sel).val();
checkoutLastName = $(lastname_sel).val();
fireCheckoutAC();
});
// lets grab the first name and last name if already in input
var firstname_sel_pre = $('#onestepcheckout .ty-billing-first-name input')[0];
var lastname_sel_pre = $('#onestepcheckout .ty-billing-last-name input')[0];
if ($(firstname_sel_pre).length > 0 || $(lastname_sel_pre).length > 0) {
if (firstname_sel_pre.value || lastname_sel_pre.value) {
checkoutFirstName = $(firstname_sel_pre).val();
checkoutLastName = $(firstname_sel_pre).val();
fireCheckoutAC();
}
}
});
/*当进入收银台并添加到废弃购物车时,抓取已完成的电子邮件
该届会议*/
功能验证码(v){
在新一个regEXR r r=新的regEXR r r=新的RegExp(((((“[\w-\w-[[[w-[[w-[[[w-[s-))的r r=新的regEXR r r r=新的RegExp((((“[[[[[[[w-\w-\\s-\s[s-\s][[[[[[s-\s[s][[[[s][[[[[[[s][[[s][[3]]]]]]的+)))))))))的)号号(((((((()))))(([[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[|[0-9]{1,2}\)((25[0-5]{2[0-4][0-9]{2}{0-9]{1,2}\){2}(25[0-5]{2[0-4][0-9]{1[0-9]{2}{1,2}}})/);
返回值(v.match(r)==null)?false:true;
}
//设置全局变量
var checkoutEmail=“”;
var checkoutFirstName=“”;
var checkoutLastName=“”;
$(文档).ready(函数(){
函数fireCheckoutAC(){
$.ceAjax('request',fn_url('ac.email'){
方法:“post”,
数据:{
“电子邮件”:checkoutEmail,
“firstname”:checkoutFirstName,
“lastname”:checkoutLastName
},
缓存:true
});
}
//用于检查电子邮件字段、验证并保存到此客户会话的ac的功能
功能检查(字段){
字段=$(字段);
var email=field.val();
var emailError=“电子邮件字段中的电子邮件地址无效。”;
var emailInputId=field.attr('id');
if($(“+emailInputId+”\u错误\u消息”).length>0){
$(“+emailInputId+”\u错误消息”).remove();
}
//log($(emailInputId+“\u错误\u消息”);
如果(有效邮件(电子邮件)){
//警报(“有效电子邮件”);
checkoutEmail=电子邮件;
fireCheckoutAC();
field.removeClass('cm-failed-field');
field.prev().removeClass('cm-failed-label');
字段.next(“span”).remove();
}否则{
field.addClass('cm-failed-field');
field.prev().addClass('cm-failed-label');
字段。在(“”+emailError+“”)之后;
}
}
//让我们检查电子邮件输入是否已填充,如浏览器自动填充等。如果已填充,请使用该选项并保存
var字段=$('#onestepcheckout.ty计费电子邮件输入')[0];
如果($(字段).length>0){
if(字段值){
选中它(字段);
}
}
//检查输入的电子邮件并保存到此客户的ac会话,或者电子邮件是否更改为更新
$('#onestepcheckout.ty计费电子邮件输入').blur(函数(){
检查(这个);
});
//如果输入了名字,让我们抓取它并添加到客户的ac会话中
变量firstname_sel='#onest