javascript - AJAX 请求保存到数据库但警报失败

标签 javascript php jquery ajax twitter-bootstrap

我有一个 Bootstrap 模式联系表单,它使用 AJAX 和 PHP 将用户发送的信息保存到数据库:

        <div class="modal fade" id="contact" role="dialogue">
    <div class="modal-dialog">
        <div class="modal-content">

            <div class="modal-body">
                <form id="myform" role="form">

                    <div class="form-group">

                        <label for="name">Name: </label>
                        <input type="name" name="name" class="form-control" id="name" >

                    </div>

                    <div class="form-group">

                        <label for="email">Email: </label>
                        <input type="email" name="email" class="form-control" id="email">

                    </div>

                    <div class="form-group">

                        <label for="msg">Message: </label>
                        <textarea class="form-control" name="msg" id="msg" rows="10"></textarea>
                    </div>

                    <!-- <a class="btn btn-primary" data-dismiss="modal">Close</a> -->
                    <button id="sub" type="submit" name="submit" class="btn btn-default">Submit</button>

                </form>
            </div>
        </div>
    </div>
</div>

当我提交表单时,页面警告 AJAX 请求失败,但信息仍然保存到数据库!?任何人都知道我哪里出错了,我在下面附上了我的 script.js 和 send.php 文件:

Javascript/Ajax 文件:

$(document).ready(function(){
$('#myform').submit(function(){

    $.ajax({
        type: 'post',
        url: 'send.php',
        dataType: 'json',
        async: true,
        data: $('#myform').serialize(),
        success: function(msg){
            alert("It was a success");
            return false;

        },
        error: function(jqXHR, textStatus, errorThrown){
            alert("Fail");
            console.log(jqXHR + '-' + textStatus + '-' + errorThrown);
            return false;
        }
    });
});
});

用于处理并保存到数据库的 PHP 文件

<?php

include 'connect.php';

if(isset($_POST['name'])&&($_POST['email'])&&($_POST['msg']))
{
$sql = "INSERT INTO details (name, email, message) VALUES (:Name, :Email, :Msg)";

$stmt = $pdo->prepare($sql);

$stmt->bindParam(':Name', $_POST['name'], PDO::PARAM_STR);
$stmt->bindParam(':Email', $_POST['email'], PDO::PARAM_STR);
$stmt->bindParam(':Msg', $_POST['msg'], PDO::PARAM_STR);

$stmt->execute();

echo "done";

}else{

echo "Nothing posted";

}

?>

P.S 控制台没有输出任何错误,只有失败的警报。

最佳答案

根据你的javascript,你的ajax期望收到一个json结果,看看这一行

 dataType: 'json',

但是在你的 php 代码中你只是回显一个字符串

 echo "Nothing posted";

两种解决方案,删除 javascript dataType: 'json' 中的这段代码 或者在你的 php 中返回一个 json

 $data['result'] = "nothing posted";
 echo json_encode($data);

关于javascript - AJAX 请求保存到数据库但警报失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32104910/

相关文章:

android - Cordova 振动不工作

javascript - 子类化错误: adding prototype methods does not take effect

javascript - document.addEventListener 与 $(document).on

php - 将配置文件放在公共(public)根目录之外时。我如何在不定义路径的情况下在每个页面上调用它

javascript - 在页面之间导航时显示加载程序 - PWA

javascript - 如何选择与单击按钮相同的 div 的元素

javascript - vue-resource get 请求不适用于 Laravel 5.3

javascript - 将 PHP 逻辑实现到 jQuery

php - 使用angularjs在laravel 5.1中自动销毁 session

jquery - CSS Slide 多主体背景图片