javascript - 将复选框数组传递到 AJAX 调用中

标签 javascript php arrays ajax checkbox

我正在尝试将复选框数组传递到我正在处理的搜索表单的 AJAX 调用中:

HTML:

<form id="searchForm">
    <input type="checkbox" class="typesSearch" name="types[]" value="Fundraiser" checked />&nbsp;Fundraiser<br>
    <input type="checkbox" class="typesSearch" name="types[]" value="Conference" checked />&nbsp;Conference<br>
</form>

JavaScript:

var types = [];

var eventTypes = document.forms['searchForm'].elements[ 'types[]' ];

for (var i=0, len=eventTypes.length; i<len; i++) {
    if (eventTypes[i].checked ) {
        types.push($(eventTypes[i]).val());
    }
}

$.ajax({
    url: "https://www.example.com/search.php",
    method: "post",
    data:{
        eventname: eventname,
        types: types
    },
    dataType:"text",
    success:function(data)
    {
        $('#eventsList').html(data);
        $('#eventsList').slick($opts);
    }
});

PHP:

$event_types = $_POST['types'];

types 数组在 javascript 端很好,当它到达 PHP 端时 $_POST['types'] 被读取为空。

为什么$_POST['types']读为空? AJAX 调用中是否有某些内容需要定义我正在传递数组而不是字符串?

最佳答案

尝试在“数据”中使用以下内容:

$.ajax({
    url: "https://www.example.com/search.php",
    method: "POST",
    data:{
        eventname: eventname,
        types: JSON.stringify(types)
    },
    dataType:"text",
    success:function(data)
    {
        $('#eventsList').html(data);
        $('#eventsList').slick($opts);
    }
});

这样,类型是一个字符串,您需要在 PHP 端将其解析为数组对象。

在服务器端,您可以使用以下代码来获取数组。 $item[0]

$event_types = $_POST['types'];
$item = (json_decode(stripslashes($event_types)));

关于javascript - 将复选框数组传递到 AJAX 调用中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54134424/

相关文章:

javascript - Highcharts 中的 stackLabels 配置

php - 在 excel 中打开 CSV 文件会更改我的格式

php - 选择选项以根据 mysql 填充的下拉列表更新第二个选择选项

c - 我怎么在这里错误地使用 malloc ?

javascript - 无法使用 jquery 附加图像

javascript - 变量作用域冲突Js

javascript - 使用 Node.io 运行作业时出现问题

javascript - AngularJs 发布请求获取错误

c++ - 为什么数组中存储了额外的数据?

ruby - 使用 gets.chomp 将字符串列表作为参数传递