我是Magento的初学者,我正在使用QuickCheckout表单,我需要验证电子邮件字段。
当用户将电子邮件放在字段上时,我需要动态搜索数据库(table customer_entity)中的电子邮件,而不进行刷新
我使用Ajax.Request编写代码,用于验证使用正则表达式编写电子邮件
function validar_email() {
local = "billing";
var urlAjax = location.href;
var validarUrl = /^https:\/\//;
if ( urlAjax.match( validarUrl ) ) {
urlAjax = '<?php echo Mage::getBaseUrl("link", true)."ajaxend/ajax" ?>';
} else {
urlAjax = '<?php echo $this->getUrl("ajaxend/ajax") ?>';
}
new Ajax.Request( urlAjax, {method: 'POST',
parameters: 'email='+$(local+':email').value,
evalScripts: true,
onLoading: function(transport) {
$('load-email-'+local).innerHTML = 'Verificando E-mail';
},
onSuccess: function(transport) {
var emailReg = /^[a-zA-Z0-9][a-zA-Z0-9\._-]+@([a-zA-Z0-9\._-]+\.)[a-zA-Z-0-9]{2}/;
var emailValido = 'E-mail Válido';
var emailInvalido = 'E-mail Inválido, digite outro';
if( !emailReg.test($(local+':email').value)){
$('load-email-'+local).innerHTML = emailInvalido;
} else {
$('load-email-'+local).innerHTML = emailValido;
}
},
onComplete: function(transport) {
},
onFailure: function() { /*document.getElementById("...").innerHTML = 'problemas...';*/ }
});
}
我在数据库中搜索了两段代码: 代码1:
$email = $_POST['email'];
$resource = Mage::getSingleton('core/resource');
$readConnection = $resource->getConnection('core_read');
$table = $resource->getTableName('customer_entity');
$query = 'SELECT email FROM ' . $table . ' WHERE email = "'.$email.'";';
$sku = $readConnection->fetchAll($query);
代码2(仅限PHP):
$queryVerifEmail = '';
$queryVerifEmail .= ' SELECT email FROM customer_entity';
$queryVerifEmail .= ' WHERE email = "'.$email.'";';
$result = mysql_query($queryVerifEmail);
if(mysql_num_rows($result) > 1){
echo $email.' já existe na base!'; } else{ echo $email.'valido'; }
我尝试在行
中制作引用的php文件new Ajax.Request( "getEmail.php?", {method: 'GET',
没有任何作用,但Ajax.Request是在Magento中无需刷新即可使输入工作的唯一方法
我想拥有您所知道的最佳解决方案,但我不想为它购买或安装新模块,我想要一个代码解决方案,使用Ajax,JQuery或PHP。
答案 0 :(得分:0)
您可以使用jQuery自动完成功能完成此任务 从ajax请求,您可以从数据库中检索数据并转换为json数组并显示建议