复选框改变时的Ajax调用

5

我有一个复选框。当我勾选了这个复选框时,我想要获取值1,然后通过该值更新mysql查询。同时,如果我取消勾选复选框,则获取值0,然后再次更新mysql查询。请帮助我。这应该通过ajax调用完成。代码将使用PHP。

HTML代码:

<input type="checkbox" name="action1" id="action1" title="Action 1" value="1" onclick="return Populat_Industry('set_home_vid.php');"/>

AJAX调用

<script>
function Populat_Industry(url){
    var value=$(#action1).val();
    $.ajax({
   type: "POST",
   url: url,
   async: true,
   data: "value="+value,
   success: function(msg){
      //alert('Success');
       if(msg !='success'){
        //alert('Fail');
       } 
   }
});
}

</script>

PHP 代码

if($_POST['action1']=='1'){
$query= mysql_query("UPDATE homevideos SET is_active = '1
}
else{
mysql_query("UPDATE homevideos SET is_active = '0')
echo 'success';

你想知道 checked 状态,但值不会改变。 - charlietfl
4个回答

4

Ajax调用是异步的。你不能用这种方式使用return。在jQuery中编写复选框更改事件并发送Ajax调用。

像这样操作:

HTML:

<input type="checkbox" name="action1" id="action1" title="Action 1" value="1"/>

JQUERY:

$("#action1").change(function () {
    var value = $(this).val();
    $.ajax({
        type: "POST",
        url: "set_home_vid.php",
        async: true,
        data: {
            action1: value // as you are getting in php $_POST['action1'] 
        },
        success: function (msg) {
            alert('Success');
            if (msg != 'success') {
                alert('Fail');
            }
        }
    });
});

2

HTML :

<input type="checkbox" name="action1" id="action1" title="Action 1" value="1" url="set_home_vid.php" />

JQuery:

<script>
     $("#action1").change(function(){
           var value = $(this).val();
           var url = $(this).attr("url"); 
           $.ajax({
               type: "POST",
               url: url,
               data: "value="+value,        //POST variable name value
               success: function(msg){
                    if(msg =='success'){
                        alert('Success');
                    } 
                    else{
                        alert('Fail');
                    }
               }
           }); 
     }); 
</script>

PHP:

     if($_POST['value']==1){  //as used variable name "value" in ajax post data
          $query= mysql_query("UPDATE homevideos SET is_active = 1"); //query was incomplete and missing ";"
          echo 'success';
     }
     else{
          mysql_query("UPDATE homevideos SET is_active = 0); // missing ";"
          echo 'success';
     }

1
也许您可以使用jQuery的.is方法。
类似这样:
$("#i").bind("change",function(){
    if($(this).is(":checked"))
        // set value for ajax
    else
       // set another value for ajax
    // ajax code here
});


0

你忘记在获取输入值时加上引号:

var value=$("#action1").val()

最有趣的是,这些语法错误会显示在浏览器的控制台中。为什么人们不检查控制台 - 我不知道... - Regent

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接