【问题标题】:Updating database with jquery ajax doesn't work使用 jquery ajax 更新数据库不起作用
【发布时间】:2016-04-10 11:24:52
【问题描述】:

当用户单击或离开输入字段时,我尝试更新数据库字段。 为此,我使用 jquery $.post 函数。 这是我的 jquery 函数:

 $('.ajadd').click(function(){ //.ajadd is the class of the input field
        var dbfield=addtitle;
        var fieldval='check';

        var post_txt='additional.php?dbfield='+dbfield+'&fieldval='+fieldval;

        $.post(post_txt,function(data){
            alert(data);
        });
    });

我在additional.php 文件中处理请求,如下所示:

if(isset($_POST['fieldval'])){

    $fieldname=$_POST['dbfield'];
    $fieldvalue=$_POST['fieldval'];
    $a=new mysqli('localhost','root','','mydbname');
    $query="UPDATE mydbtable SET $fieldname=' $fieldvalue' WHERE id=1";
    $res=$a->query($query);
    echo 'update complete';
}

我简化了代码,以便您找到问题所在。我知道我没有为 SQL 注入处理 $_POST 数组,这不是我现在想要的。我只是想知道为什么这段代码不起作用。

补充一点:我检查了数据库连接,它工作正常。 我检查了 if 语句之外的查询,它正在工作。 在我的 php 文件中,我回显了“更新完成”,在我的 $.post 回调函数中,我提醒了返回数据,但它显示了一个空的消息框。 这对我来说意味着 php 文件已成功执行,但我不知道为什么我会得到一个空的回调函数消息框。 请帮忙。

【问题讨论】:

    标签: javascript php jquery mysql ajax


    【解决方案1】:
     $('.ajadd').change(function(){ //use change instead of click
            var dbfield=addtitle;
            var fieldval='check';
    
            var post_txt='additional.php';
    // you also need to pass data separately instead of query string
            $.post(post_txt, { dbfield : dbfield , fieldval : fieldval} ,function(data){
                alert(data);
            });
        });
    

    【讨论】:

      【解决方案2】:

      您实际上是以GET 而不是POST 发送它。所以用这种方式改变你的代码:

      var post_txt = 'additional.php';
      
      $.post(post_txt, {
        'dbfield':  dbfield,
        'fieldval': fieldval
      }, function(data) {
        alert(data);
      });
      

      现在数据将以POST 而不是GET 发送。

      【讨论】:

      • 当您使用 $.post 时,参数是通过 $_POST 而不是 $_GET 发送的。我检查了firebug中的net选项卡,它说有一个带有dbfield和fieldval键以及相应值的post请求。
      【解决方案3】:

      我认为你做错了两件事,

      首先,使用文本框的点击事件,而不是你正在寻找focusout 我猜。使用它就像..

      $("input").focusout(function(){
          //CODE HERE
      });
      

      而在 ajax 中,您在 url 参数中发送数据并使用 POST 访问。将其更改为获取。

      【讨论】:

      • 当您使用 $.post 时,参数是通过 $_POST 而不是 $_GET 发送的。我检查了 firebug 中的 net 选项卡,它说有一个带有 dbfield 和 fieldval 键以及相应值的发布请求。此外,此时事件并不重要,因为即使 focusout() 事件也不起作用。
      猜你喜欢
      • 1970-01-01
      • 2016-08-31
      • 2016-08-03
      • 2013-08-23
      • 2020-07-31
      • 1970-01-01
      • 2015-11-01
      • 2015-03-22
      • 1970-01-01
      相关资源
      最近更新 更多