我有一个用户可以看到的项目选项(类别)列表。通过选择类别,下面的div应该更新为与所述类别匹配的项目列表。
尽管使用了以下答案,几乎是逐字逐句,Send array with Ajax to PHP script,我仍然无法检索任何结果,但也没有出现任何错误。
jquery:
// filter for projects
var $checkboxes = $("input:checkbox");
function getProjectFilterOptions(){
var opts = [];
$checkboxes.each(function(){
if(this.checked){
opts.push(this.name);
}
});
return opts;
}
$checkboxes.on("change", function(){
var opts = getProjectFilterOptions();
//alert(opts);
var categories = JSON.stringify(opts);
$.ajax({
url: "/web/plugins/projcat.php",
type: "POST",
dataType: "json",
data: {data : categories},
cache: false,
success: function(data) {
$('#projects').html(data);
//alert(data);
}
});
});
php(仍在测试中,所以没有填写):
<?php
if(isset($_POST['categories'])) {
//echo "testing";
$data = json_decode(stripslashes($_POST['categories']));
print_r($data);
}
?>
错误在哪里?
答案 0 :(得分:1)
试试这个:
JS
...
// dataType: "json", // remove that; you're not sending back JSON string
data: {categories : categories},
cache: false,
...
PHP
<?php
if($_SERVER['REQUEST_METHOD']=='POST' && isset($_POST['categories'])) {
//echo "testing";
$data = json_decode(stripslashes($_POST['categories']));
// .. process the $data
print_r($data);
return;
}
?>
答案 1 :(得分:0)
您想要的数组位于$_POST['data']
而不是$_POST['projcats']
。将data: {data : categories},
更改为data: { projcats: categories },
以使用$_POST['projcats']
。