[英]Problem with jquery ajax form on Codeigniter
我每次測試時都會正確發送電子郵件。 (我在PC上測試過:IE6,IE7,IE8,Safari,Firefox,Chrome.MAC:Safari,Firefox,Chrome。)
_POST在jquery(javascript)中完成。 然后,當我在瀏覽器中關閉javascript時,沒有任何事情發生,因為沒有_POSTed。
Nome: Jon Doe
Empresa: Star
Cargo: Developer
Email: jondoe@test.com
Telefone: 090909222988
Assunto: Subject here..
但我一直收到客戶的電子郵件:
Nome:
Empresa:
Cargo:
Email:
Telefone:
Assunto:
CONTACT_FORM.PHP
<form name="frm" id="frm">
<div class="campoFormulario nomeDeCampo texto textocinzaescuro" >Nome<font style="color:#EE3063;">*</font></div>
<div class="campoFormulario inputDeCampo" ><input class="texto textocinzaescuro" size="31" name="Cnome" id="Cnome" value=""/></div>
<div class="campoFormulario nomeDeCampo texto textocinzaescuro" >Empresa<font style="color:#EE3063;">*</font></div>
<div class="campoFormulario inputDeCampo" ><input class="texto textocinzaescuro" size="31" name="CEmpresa" id="CEmpresa" value=""/></div>
<div class="campoFormulario nomeDeCampo texto textocinzaescuro" >Cargo</div>
<div class="campoFormulario inputDeCampo" ><input class="texto textocinzaescuro" size="31" name="CCargo" id="CCargo" value=""/></div>
<div class="campoFormulario nomeDeCampo texto textocinzaescuro" >Email<font style="color:#EE3063;">*</font></div>
<div class="campoFormulario inputDeCampo" ><input class="texto textocinzaescuro" size="31" name="CEmail" id="CEmail" value=""/></div>
<div class="campoFormulario nomeDeCampo texto textocinzaescuro" >Telefone</div>
<div class="campoFormulario inputDeCampo" ><input class="texto textocinzaescuro" size="31" name="CTelefone" id="CTelefone" value=""/></div>
<div class="campoFormulario nomeDeCampo texto textocinzaescuro" >Assunto<font style="color:#EE3063;">*</font></div>
<div class="campoFormulario inputDeCampo" ><textarea class="texto textocinzaescuro" name="CAssunto" id="CAssunto" rows="2" cols="28"></textarea></div>
<div class="campoFormulario nomeDeCampo texto textocinzaescuro" > </div>
<div class="campoFormulario inputDeCampo" style="text-align:right;" ><input id="Cbutton" class="texto textocinzaescuro" type="submit" name="submit" value="Enviar" /></div>
</form>
<script type="text/javascript">
$(function() {
$("#Cbutton").click(function() {
if(validarForm()){
var Cnome = $("input#Cnome").val();
var CEmpresa = $("input#CEmpresa").val();
var CEmail = $("input#CEmail").val();
var CCargo = $("input#CCargo").val();
var CTelefone = $("input#CTelefone").val();
var CAssunto = $("textarea#CAssunto").val();
var dataString = 'nome='+ Cnome + '&Empresa=' + CEmpresa + '&Email=' + CEmail + '&Cargo=' + CCargo + '&Telefone=' + CTelefone + '&Assunto=' + CAssunto;
//alert (dataString);return false;
$.ajax({
type: "POST",
url: "http://www.myserver.com/index.php/pt/envia",
data: dataString,
success: function() {
$('#frm').remove();
$('#blocoform').append("<br />Obrigado. <img id='checkmark' src='http://www.myserver.com/public/images/estrutura/ok.gif' /><br />Será contactado brevemente.<br /><br /><br /><br /><br /><br />")
.hide()
.fadeIn(1500);
}
});
}
return false;
});
});
function validarForm(){
var error = 0;
if(!validateNome(document.getElementById("Cnome"))){ error = 1 ;}
if(!validateNome(document.getElementById("CEmpresa"))){ error = 1 ;}
if(!validateEmail(document.getElementById("CEmail"))){ error = 1 ;}
if(!validateNome(document.getElementById("CAssunto"))){ error = 1 ;}
if(error == 0){
//frm.submit();
return true;
}else{
alert('Preencha os campos correctamente.');
return false;
}
}
function validateNome(fld){
if( fld.value.length == 0 ){
fld.style.backgroundColor = '#FFFFCC';
//alert('Descrição é um campo obrigatório.');
return false;
}else {
fld.style.background = 'White';
return true;
}
}
function trim(s)
{
return s.replace(/^\s+|\s+$/, '');
}
function validateEmail(fld) {
var tfld = trim(fld.value);
var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
if (fld.value == "") {
fld.style.background = '#FFFFCC';
//alert('Email é um campo obrigatório.');
return false;
} else if (!emailFilter.test(tfld)) {
//alert('Email inválido.');
fld.style.background = '#FFFFCC';
return false;
} else if (fld.value.match(illegalChars)) {
fld.style.background = '#FFFFCC';
//alert('Email inválido.');
return false;
} else {
fld.style.background = 'White';
return true;
}
}
</script>
功能ENVIA(電子郵件發件人):
function envia()
{
$this->load->helper(array('form', 'url'));
$nome = $_POST['nome'];
$empresa = $_POST['Empresa'];
$cargo = $_POST['Cargo'];
$email = $_POST['Email'];
$telefone = $_POST['Telefone'];
$assunto = $_POST['Assunto'];
$mensagem = " Nome:".$nome."
Empresa:".$empresa."
Cargo:".$cargo."
Email:".$email."
Telefone:".$telefone."
Assunto:".$assunto."";
$headers = 'From: site@test.com' . "\r\n" .
'Reply-To: no-reply' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail('email@test.com', $mensagem, $headers);
}
您需要為表單操作=“http://www.myserver.com/index.php/pt/envia”指定ACTION屬性,因為您要發布到您的contact_form.php,我想這不是您要發布的位置看着你的AJAX代碼。
第二次編輯:
您還需要指定表單的METHOD屬性。 目前已禁用JavaScript,表單通過GET發送,您正在尋找POST變量。
<form name="frm" id="frm" method="post">
試試這段代碼:
var add_member_form=document.getElementById('frm');
$.ajax({type:'POST', url: add_member_form.action, data:$('#frm').serialize(),
success: function(response) {
alert(response);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.