【发布时间】:2019-06-05 15:52:50
【问题描述】:
我正在尝试将一个复选框数组传递给一个 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'];
类型数组在 javascript 端很好,当它到达 PHP 端时,$_POST['types'] 被读取为空。
为什么 $_POST['types'] 被读取为空?在 AJAX 调用中是否需要定义我传递的是数组而不是字符串?
【问题讨论】:
-
您使用的是 jQuery 1.9.0 还是更新版本?来自文档:
You should use "type" if you're using versions of jQuery prior to 1.9.0.。method参数是在版本 1.9.0 中添加的。 api.jquery.com/jquery.ajax。如果使用的是旧版本的 jQuery,那么type数组将可以通过 PHP 脚本中的$_GET获得,因为这是使用的默认 HTTP 方法。
标签: javascript php arrays ajax checkbox