Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery ajax更新数据库不会';行不通_Javascript_Php_Jquery_Mysql_Ajax - Fatal编程技术网

Javascript 使用jquery ajax更新数据库不会';行不通

Javascript 使用jquery ajax更新数据库不会';行不通,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,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+

当用户单击或离开输入字段时,我尝试更新数据库字段。 为此,我使用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注入处理
$\u POST
数组,这不是我现在想要的。我只是想知道为什么这个代码不起作用

另外一点:我检查了数据库连接,它工作正常。 我检查了if语句外部的查询,它正在工作。 在我的php文件中,我回显了“updatecomplete”,在$.post回调函数中,我提醒了返回数据,但它显示了一个空的messagebox。 对我来说,这意味着php文件已经成功执行,但我不知道为什么会出现一个空的回调函数messagebox。
请帮助。

您实际上是以
GET
而不是
POST
的形式发送的。因此,请按以下方式更改代码:

var post_txt = 'additional.php';

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

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

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

首先,使用click event作为文本框,而不是我想您要查找的是
focusout

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

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

当您使用$.POST时,参数通过$\u POST而不是$\u get发送。我检查了firebug中的net选项卡,它显示有一个post请求,其中包含dbfield和fieldval键以及相应的值。使用$.post时,参数通过$post发送,而不是$GET发送。我检查了firebug中的net选项卡,它显示有一个post请求,其中包含dbfield和fieldval键以及相应的值。此外,此时事件也无关紧要,因为即使focusout()事件也不起作用。
 $('.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);
        });
    });