使用 jquery ajax 更新数据库不起作用



当用户单击或离开输入字段时,我会尝试更新数据库字段。为此,我使用了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文件被成功执行,但我不知道为什么我最终会得到一个空的回调函数messagebox。请帮忙。

 $('.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);
        });
    });

您实际发送的是GET而不是POST。因此,以这种方式更改您的代码:

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

现在,数据将作为POST而不是GET发送。

根据我的说法,,你做错了两件事

首先,使用点击事件作为文本框,我想您正在寻找focusout。像…一样使用它。。

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

在ajax中,您在url参数中发送数据,并使用POST进行访问。将其更改为get。

相关内容

  • 没有找到相关文章

最新更新