【问题标题】:My ajax code don't send the data to the database我的 ajax 代码不将数据发送到数据库
【发布时间】:2014-12-13 19:11:10
【问题描述】:

我想使用 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')");

}

【问题讨论】:

  • 1.打开开发者控制台。 2. 检查您的 php 文件是否有错误 - 例如在 extract($_POST) 之后应该是 ;

标签: javascript php html ajax database


【解决方案1】:
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

【讨论】:

  • 我打开了控制台并更改了一些东西,但它仍然不起作用我必须使用的准备好的语句是什么,或者没有它可以吗?
  • 我不太明白您所说的“打开控制台并更改了一些东西”是什么意思。您必须在您的 javascript 文件中修复它,而不是在控制台中修复它,因为您在控制台中所做的操作会在您刷新浏览器后重置。您在 jQuery 中使用了错误的选择器,这就是您的 ajax 没有发送任何内容的原因。我不确定你在你的 php 中做了什么,所以我无能为力。而且您不一定需要准备好的语句,但建议您使用它们,否则您的数据库查询很容易出现 sql 注入。
【解决方案2】:

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

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

我认为你应该在这里包含你的数据库信息,'include_once("database info.php"); ,还要确保你的 ajax 将返回一个结果,并回显 php 错误,以确保它是一个 ajax 或 php 错误,

【讨论】:

  • 您可以将结果附加到某个 html div,如果它是一个 php 错误并且您在后端有错误控制,它将返回 php 错误代码,如果没有,它不会返回返回任何东西
【解决方案3】:

我对您的问题几乎没有意见:

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

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

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

    var context = $("#inputmessage").val();

【讨论】:

    【解决方案4】:

    这是最终的工作示例。只需在提交回调函数中添加“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>

    【讨论】:

    • 仍然不起作用 >" name=" I_name"/>
    猜你喜欢
    • 2018-10-26
    • 2019-10-16
    • 2014-09-26
    • 2013-09-14
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    相关资源
    最近更新 更多