Php Ajax提交表单,并检索成功/错误

Php Ajax提交表单,并检索成功/错误,php,jquery,ajax,Php,Jquery,Ajax,我使用jQuery和Ajax将表单提交到PHP脚本 用户将输入他们的详细信息,单击submit按钮,PHP脚本将运行,并将执行所需的操作或失败 此时,我希望根据错误类型显示成功或错误消息 <script> $( "#contact-form" ).submit(function(event) { event.preventDefault(); $.ajax({ url: "includes/contact-us.php", type:

我使用jQuery和Ajax将表单提交到PHP脚本

用户将输入他们的详细信息,单击submit按钮,PHP脚本将运行,并将执行所需的操作或失败

此时,我希望根据错误类型显示成功或错误消息

<script>
$( "#contact-form" ).submit(function(event) {
    event.preventDefault();
    $.ajax({
        url: "includes/contact-us.php",
        type: "post",
        data: $("#contact-form").serialize(),
        success:function(data) {
         alert(data);
        },
        error:function(){
            alert("failure");
        }   
    }); 
});
</script>
但是,在本例中,警报框显示为空。firebug或Apache日志中没有错误

是否可以:当我使用Ajax执行提交时,我可以收到一个
echo“Text from error or success box”然后我可以将其放入引导警报中

我写的代码是新的,所以适应新的图书馆是我要考虑的事情。这纯粹是为了让UI增强显示错误或成功消息,如果用户禁用了javascript,那么表单默认操作就不会被阻止——他们就不会看到成功或错误消息

我所看到的是,如果Javascript在可用性方面更好,我并不介意使用Javascript,因为我不想在提交时冻结浏览器

感谢您抽出时间

您可以在php中使用try catch()


您的代码应该如下所示

我将从PHP返回一个标准形式的成功/错误。所以失败可能是这样的:

json_encode(['success'=>false]);
$.ajax({
    url: "includes/contact-us.php",
    type: "post",
    data: $("#contact-form").serialize(),
    success:function(data) {
        data = JSON.parse(data);

        if (data.success)
            alert('success!');
        else
            alert('got failure response from PHP');
    },
    error:function(){
        alert("failure");
    }   
}); 
然后在Javascript中执行此操作将如下所示:

json_encode(['success'=>false]);
$.ajax({
    url: "includes/contact-us.php",
    type: "post",
    data: $("#contact-form").serialize(),
    success:function(data) {
        data = JSON.parse(data);

        if (data.success)
            alert('success!');
        else
            alert('got failure response from PHP');
    },
    error:function(){
        alert("failure");
    }   
}); 

在我的PHP中,我有一个if()语句来查看插入是否发生,但是即使由于apache错误日志中出现错误而导致插入失败,Ajax回调仍然成功。我该如何解决呢?如果ajax能够向php文件发送请求,那么它将始终返回成功消息,因此您需要验证php文件中的错误,并根据请求状态返回消息,您可以将php代码放在这里吗?对于成功/错误消息,我知道我必须进行json_编码。但是,我如何让Ajax调用从PHP脚本的回音中确定成功或错误?成功或错误的函数,只是Ajax是否完成请求,因此如果是否收到错误,您需要从PHP发送响应,因此您需要为此执行“如果”或尝试捕获,在ajax中的success函数中,您使用returnval,我看到谁会收到错误或成功消息,这就是我要寻找的。唯一的问题是,在“data=JSON.parse(data);”上,我在firebug中得到一个错误,它的内容是“SyntaxError:JSON.parse:JSON数据的第1行第1列的数据意外结束”,那么它一定是来自PHP的错误。如果您使用的是旧版本的PHP,则需要使用以下术语:array(“success”=>true);如果仍然存在问题,请在解析之前和之后使用console.log(数据)并将其发布到此处。最后使用google recaptcha元素对其进行了一些调整。谢谢你的时间!