我正在尝试将复选框数组传递到我正在处理的搜索表单的 AJAX 调用中:
HTML:
<form id="searchForm">
<input type="checkbox" class="typesSearch" name="types[]" value="Fundraiser" checked /> Fundraiser<br>
<input type="checkbox" class="typesSearch" name="types[]" value="Conference" checked /> 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/