我使用ajax发送表单而不重新加载。我使用以下方法:
我的邮件发件人:
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
mailTo($to, $subject, $message, $headers);
echo "0";
}else{
echo "1";
}
将信息发送到上面的php文件的脚本
$(document).ready(function(){
$('#submitbtn').click(function(){
$.post("send.php", $("#mycontactform").serialize(), function(response) {
$('#success').html(response);
});
return false;
});
});
每当我提供有效的电子邮件及其发送时,它都会返回0
。当它失败时,它返回1
。现在我没有在div #SUCCESS中显示这个值,而是想将这个值存储在var中,这样我就可以看到邮件是否发送了。如果发送可以隐藏联系表格。
我想出了这个:
$(document).ready(function(){
$('#submitbtn').click(function(){
$.post("send.php", $("#mycontactform").serialize(), function(response) {
var x = html(response);
if (x == 0){
$('#mycontactform.hide').hide;
document.getElementByID('succes').innerHTML = 'Message send';
}else{
//display some error message
}
});
return false;
});
});
但它不起作用。谁知道为什么。我认为它与var x =
有关,不存储Html响应
答案 0 :(得分:1)
在您的第一个代码段中,您执行了此操作:
$('#success').html(response);
这里,html()是$的函数,在你的第二个片段中你做了这个:
var x = html(response);
但可能你没有名为html()的全局函数?你可能想要:
var x = parseInt( response,10 );
我还强烈建议您考虑使用Chrome / FireFox / IE DevTools以便将来调试此类内容。
答案 1 :(得分:0)
你可以在得到回复之后准备你的html。然后将它附加到你想要的任何地方的前一个版本。它将避免刷新页面。
可以做这样的事情
$(document).ready(function()
{
var html = '';
html += '<div class="item col-xs-12 col-lg-6">';
html += '<div class="thumbnail">';
html += '<div class="caption">';
html += '<h4 class="group inner list-group-item-heading">';
html += '<b>'+data.subject+'</b></h4>';
html += '<h5><b>'+data.projectname+'</b></h5><br />';
html += '</div>';
html += '</div></div>';
$('#content').append(html);
});
内容是我的部门的ID。我正在准备html并将其附加到内容。数据是回复。