使用jQuery和AJAX提交表单,我的PHP文件执行所有验证并返回两个响应中的一个。
如果成功:
<div id='formres'>1</div>
<div id='formresposta'>
<h2>SUCESSO</h2>
</div>
或者此(未提交,发现错误):
<div id='formres'>0</div>
<ul>
<li>errnome</li>
<li>errmail</li>
<li>errmsg</li>
</ul>
到目前为止我写的jQuery设法做我想做的事情,除非在发现错误的情况下采取行动......这里是:
$("#formcontacto").submit(function () {
var dados = $(this).attr("action");
$.post(dados,{
nome:$(".nome").val(),
email:$(".email").val(),
telefone:$(".telefone").val(),
mensagem:$(".mensagem").val()
},
function (dados) {
resultado = $(dados).filter(function(){ return $(this).attr("id") == "formres"}).text();
alert(resultado);
if(resultado == 1){
$("#formcontacto").fadeOut("slow");
$("#formcontainer").html(dados).fadeIn(3000);
}else{
alert(dados);
var erros = $(dados).filter(function(){ return $(this).is("li") }).text();
alert(erros);
erros.each(function() {
if ($(this).text() == 'errnome'){ $('.nome').css({'border':'1px solid #a00','background-color':'#ffbaba','color':'#222'}); }
if ($(this).html() == 'errmsg'){ $('.mensagem').css({'border':'1px solid #a00','background-color':'#ffbaba','color':'#222'}); }
if ($(this).html() == 'errmail'){ $('.email').css({'border':'1px solid #a00','background-color':'#ffbaba','color':'#222'}); }
})
}
});
return false;
})
我不知道为什么.is(“li”)不起作用,我也觉得我的方式过于复杂......任何线索?
提前致谢。
答案 0 :(得分:0)
这看起来像是json的工作,我完全会考虑这样的事情。
您可以根据自己的意愿创建一个PHP数组,并将其转换为:
json_encode($array)
然后您可以轻松请求该文件,类似于.post函数:
$.getJSON('your.php', { your: options }, function(data) {
if(data.formres == 1){
// Everything is ok
} else {
// Something went wrong, so print the problems
$.each(data.errors, function(key, val) {
$("#result").append('<li id="' + key + '">' + val + '</li>');
});
});
JSON如下所示:
{
"formres": "1",
"errors": {
"1": "wrong name",
"2": "wrong email",
"3": "wrong whatever"
}
}
请注意PHP中的JSON可从PHP 5.2.0获得。 此外,代码未经测试