hy,我正在制作一个wordpress插件,其中我需要使用checkbox删除多个项目。当我检查所有行并删除它时,我以json字符串的形式获得它们的行ID。 js代码:
$('.check_it:checked').each(function (i){
c[i]=$(this).val();
});
var chk = JSON.stringify({ list: c });
debugger
$.ajax({
type:"POST",
data: chk,
url:'/word/wp-content/plugins/craiglist/action.php?action=delete_leads',
dataType: "json",
success:function(response){
alert('fdsfsfdsfd');
},
failure:function (response) {
alert("Please Try Again");
},
error:function (xhr, status, error) {
alert(xhr.response);
}
});
在var chk中我得到了像
这样的字符串"{"list":["151","152","153","154","155","156","157","158","159","160","161","162","163","164","165","166","167","168","169","170","171","172","173","174","175"]}"
我怎样才能在php的服务器端获取它并将其发送到数据库,这样我就可以删除所谓的行。
答案 0 :(得分:0)
因为您要发送JSON作为发布数据,所以您必须访问PHP端的原始发布数据。这可以这样做:
$obj = json_decode($HTTP_RAW_POST_DATA);
foreach($obj->list as $item)
{
// delete from mytable
$wpdb->query(
$wpdb->prepare("DELETE FROM mytable WHERE id = %d", $item)
);
}
如果您想要$_POST
变量中的数据,则必须将ajax请求数据更改为:
$.ajax({
....
data: { list : JSON.stringify(c) },
....
现在,在PHP方面,它出现在$_POST['list']
中。所以你可以这样做:
$obj = json_decode($_POST['list']);
foreach($obj->list as $item)
{
// delete from mytable
$wpdb->query(
$wpdb->prepare("DELETE FROM mytable WHERE id = %d", $item)
);
}
答案 1 :(得分:0)
在你的服务器端php,因为你没有调用get_header()函数,你必须手动添加这段代码require_once('../../../wp-load.php');
,你现在可以调用global $ wpdb;安全和所有wp功能。另请注意,您的php文件必须与您的functions.php和其他核心文件一起位于您的主题中。 请勿将其放入主题中的其他目录