如何使用ajax获取复选框变量?

时间:2018-05-12 22:31:51

标签: javascript php ajax

我有一个复选框,在选中时,该值可由$ _GET [' image_name']检索。它适用于我的其他PHP代码,但我在使用ajax时遇到了一些麻烦。一定要简单。它不是"得到" image_name变量(这是一个数组)。

我正在使用以下代码,输出只是" image_name为空"。

<input type="checkbox" id="<?php echo $i ?>" class="checkbox" value="some_image.jpg" name="image_name[]"/>

<button type="button" onClick="rename_image()" class="button_class" name="rename" id="rename" value="rename">Rename</button>

和js:

function rename_image() 
{
    var button = document.getElementById('options_menu_details');
    {
        var div = document.getElementById('show_options_rename'); // display select_show
        if (div.style.visibility == 'hidden') 
        {
            div.style.visibility = 'visible';
            $.ajax
            (
                {
                    url:"test4.php",
                    type: "GET",
                    data: {func: 'toptable'},
                    success:function(result)
                    {
                        alert(result);
                    }
                }
            );
        }
        else 
        {
            div.style.visibility = 'hidden';
        }
    }

}

和php文件test4.php:

<?php //test4.php
function toptable()
{
    echo 'toptable';
}

if(empty($_GET['image_name']))
{
    echo '<div class="refto" id="refto">image_name is empty</div>';
}
else
{
    foreach($_GET['image_name'] as $rowid_rename)
    {
        echo '<div class="refto" id="refto">image_name is NOT empty</div><br>';

    }
}       
echo "test";


?>

ajax是否实际获取了image_name []或者我有什么遗漏?用户选中复选框,然后点击&#34;重命名&#34;按钮。但是ajax似乎没有拿起复选框而我想要它。

提前致谢。

3 个答案:

答案 0 :(得分:0)

如果我们查看jQuery $.ajax() documentation,我们会看到data标记包含您要通过GET请求发送的所有内容。您现在唯一要通过GET请求发送的内容是?func = toptable。

您需要将复选框的值添加到其中,然后我才会工作。

为了调试此类问题,开发人员控制台非常方便(特别是网络选项卡)!

答案 1 :(得分:0)

在我的HTML页面上,我定义了一个javascript函数,它接受数组的基本名称并处理它(请注意,我将它们存储在由冒号分隔的数据库中的一个字段中,因此我将它们全部转换为一个要发送到处理PHP脚本的字符串) -

function SaveCheckboxes(cbref){

        var myVal="";

        toSave=document.forms['formName'].elements[cbref];
            for(j=0;j<toSave.length;j++){
                if(toSave[j].checked){
                    myVal+=":"+toSave[j].value;
                }
            }
            var pass_data = {
                'radioID' : "gened",
                'radioVal' : myVal,
            };

        $.ajax({
            url : "saveIt.php",
            type : "POST",
            data : pass_data,
            success : function(data) {
            }
        });
   return false;
}

当我在HTML中创建复选框时(好吧,我从带有PHP的数组中读取...)我告诉它在onClick上调用该函数 -

        print("<input onClick=\"SaveCheckboxes('gened[]');\"");
        if(in_array($gened_courses[$i],$geneds)){print(" checked ");}
        print(" type=checkbox name=gened[] value=".$gened_courses[$i]."><font face=\"courier\">".$gened_courses[$i]."</font>: ".ucwords(strtolower($course_names[$gened_courses[$i]]))." <br />\n");

答案 2 :(得分:0)

我需要修改以下行:

<script src="http://www.chartjs.org/dist/2.7.2/Chart.bundle.js"></script>

<canvas id="m-chart-562-1"></canvas>    

<script type="text/javascript">
new Chart(
  document.getElementById('m-chart-562-1').getContext('2d'),
  {
        "type": "bar",
        "options": {
            "title": {
                "display": true,
                "text": "Test"
            },
            "legend": {
                "display": true,
                "position": "bottom"
            },
            "scales": {
                "xAxes": {
                    "scaleLabel": {
                        "display": true,
                        "labelString": "Horizontal Axis"
                    }
                },
                "yAxes": {
                    "scaleLabel": {
                        "display": true,
                        "labelString": "Vertical Axis"
                    }
                }
            }
        },
        "data": {
            "datasets": [{
                "label": "Number",
                "data": [10, 2, 7],
                "backgroundColor": "#7cb5ec"
            }, {
                "label": "Fatalities",
                "data": [5, 0, 1],
                "backgroundColor": "#434348"
            }],
            "labels": ["Cars", "Planes", "Boats"]
        }
    }
);
</script>

到此:

data: {func: 'toptable'},

似乎序列化从表单中收集data: $('form').serialize(), 信息并将其处理成PHP可以$ _GET的格式,例如我的$ GET ['image_name']现在正在运作。如我错了请纠正我。