我的ajax代码不会将数据发送到数据库

时间:2014-12-13 19:11:11

标签: javascript php html ajax database

我想使用ajax在数据库中添加数据,但没有任何反应 我不知道它在ajax中是错误的还是在php中 这是我的代码的一部分:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script type="text/javascript" >
          $(document).ready(function(){
        $("#commentForm").submit(function(){

            var U_N = $('input[name="U_N"]').val();
            var I_name = $('input[name="I_name"]').val();
            var context = $("#inputmessage").val();

            $.ajax({
                type: "POST",
                cache: false,  
                url : "aAddComm_Menu.php",
                data : {U_N:U_N,I_name:I_name,context:context},

            });

    });
    });//end of document ready function             
                </script>

这是html表格:

<form class="form-horizontal" role="form" id="commentForm" method="POST" action="">

                        <div class="form-group">
                            <label for="inputmessage" class="col-sm-2 control-label">comment</label>
                            <div class="col-sm-10">
                                <textarea name = "context" class="form-control" id="inputmessage"  rows="3" placeholder="Enter your comment here . . "></textarea>
                            </div>
                        </div>  <!-- End of /.form-group -->


                        <input type="hidden" value = "$Item['Item_Name']" name="I_name"/>
                        <input type="hidden" value ="$U_N"  name="U_N"/>

                        <div class="form-group">
                            <div class="col-sm-offset-2 col-sm-10">
                                <button name="SendC" type="submit" class="btn btn-primary" ;>Send</button>
                            </div>




                        </div>  

                    </form> 

这是添加到数据库的php页面的一部分

extract($_POST)

if(isset($context))
{
    mysql_query("INSERT INTO menu_commnet VALUES('$I_name','$U_N',NULL,NOW(),'$context')");

}

4 个答案:

答案 0 :(得分:0)

var U_N = $("input#U_N").val();
var I_name = $("#I_name").val();
var context = $("#context").val();

jQuery选择器是错误的,你没有选择任何东西。 #选择器代表id属性,但您尝试按name属性的值进行选择。您应该添加/更改输入字段的id属性,或使用

var U_N = $("input[name=U_N]").val();
var I_name = $("input[name=I_name]").val();
var context = $("[name=context]").val();

提示:下次使用developer console inside your browser时,您可以轻松测试选择器是否正确。您可以像在.js文件中一样输入javascript代码,并测试它是否像您期望的那样工作。

此外,请勿在PHP中执行此操作,请使用prepared statements

答案 1 :(得分:0)

您是否在后端脚本中包含了数据库连接? 提取物($ _ POST)

'if(isset($context)) {
 mysql_query("INSERT INTO menu_commnet VALUES('$I_name','$U_N',NULL,NOW(),'$context')");
 }'

我想在这里你应该包括数据库信息,&#39; include_once(&#34; database info.php&#34;); ,还要确保你的ajax会返回一个结果,并回显php错误,只是为了确保它是一个ajax或php错误,

答案 2 :(得分:0)

我对您的问题几乎没有评论:

  1. $("document").ready(function(){替换为 $(document).ready(function(){
  2. 在用PHP提取之前,     试试var_dump($_POST)
  3. 根据您的HTML代码使用:

    var U_N = $(&#39;输入[name =&#34; U_N&#34;]&#39;)。val();

    var I_name = $(&#39;输入[name =&#34; I_name&#34;]&#39;)。val();

    var context = $(&#34; #inputmessage&#34;)。val();

答案 3 :(得分:0)

这是最后的工作示例。只需添加“ev”参数即可提交回调函数,然后在其中使用ev.preventDefault()。

 $(document).ready(function(){
            $("#commentForm").submit(function(ev){

                ev.preventDefault();

                var U_N = $('input[name="U_N"]').val();
                var I_name = $('input[name="I_name"]').val();
                var context = $("#inputmessage").val();

                $.ajax({
                    type: "POST",
                    cache: false,
                    url : "aAddComm_Menu.php",
                    data : {U_N:U_N,I_name:I_name,context:context}

                });

            });
        });//end of document ready function
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form class="form-horizontal" role="form" id="commentForm" method="POST" action="">
    <div class="form-group">
        <label for="inputmessage" class="col-sm-2 control-label">comment</label>

        <div class="col-sm-10">
            <textarea name="context" class="form-control" id="inputmessage" rows="3"
                      placeholder="Enter your comment here . . "></textarea>
        </div>
    </div>



    <input type="text" value="" name="I_name"/>
    <input type="text" value="" name="U_N"/>

    <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
            <button name="SendC" type="submit" class="btn btn-primary">Send</button>
        </div>
    </div>
</form>