我正在编写一个简单的删除函数。此函数用于删除PHP输出的列表中的条目。这就是发生的事情:
- javascript选择该列表中的复选框,并获取其ID 1,2,3等
- 创建的数组使用JSON.stringify转换为JSON
- PHP获取POST并使用json_decode()对其进行解码(此操作失败)
$(document).ready(function(){
$('.action_trash').on('click', function(){
//Select items to trash
var TrashItems = [];
$('input:checked').each(function() {
TrashItems.push($(this).attr("id"));
});
//Convert to JSON
var TrashJSON = JSON.stringify(TrashItems);
alert (TrashJSON);
$.ajax({
type: "POST",
url: "pages/forms_intake/actions/trash/model_trash.php",
data: {TrashItems:TrashItems},
cache: false,
success: function(){
// do stuff to remove trashed elements from list.
}
});
});
});
我正在尝试将简单的Javascript数组转换为JSON。但是我认为JSON是无效的。当我提醒TrashJSON变量时,这是输出:["31","32"]
<?php
session_start();
include "../../../../php/config.php";
$TrashJSON = $_POST['TrashItems'];
var_dump(json_decode($TrashJSON));
//Trash items
//$TrashQuery = mysqli_query ($mysqli, "UPDATE forms_intake SET item_trashed=1 WHERE formid='$TrashInt'");
//Close connection
mysqli_close($mysqli);
?>
当我运行这个时,我得到了这个错误:
<br />
<b>Warning</b>: json_decode() expects parameter 1 to be string, array given in <b>/home/nickvmf103/domains/a-training.nl/public_html/sotwebapp/pages/forms_intake/actions/trash/model_trash.php</b> on line <b>7</b><br />
NULL
根据PHP关于json_decode的手册,如果json无效,就会输出null。
所以我的问题是:如何在javascript中正确格式化JSON?这样它就可以传递给PHP并转换为PHP数组。
其他信息:当成功转换为PHP数组时,我将使用内爆在数组值之间放置"OR",将其转换为字符串,并在SQL查询WHERE语句中使用它来清除页面上检查的项。
为了让现有的PHP按照您的期望运行,您需要发送TrashJSON
而不是TrashItems
。TrashItems
是您填充的数组,而TrashJson
是TrashItems
的JSON编码版本。
更改
data: {TrashItems:TrashItems},
至。。
data: {TrashItems:TrashJSON},
jQuery将TrashItems
正确地解释为一个数组,从而将其作为一个值数组发送到PHP脚本。
或者,正如Barmar在评论中推断的那样,您可以简单地循环当前发布为TrashItems
的值数组。您可以使用以下代码来完成此操作。
foreach ($_POST['TrashItems'] as $TrashItem) {
echo "$TrashItem'n";
}
这将在单独的一行中输出最初传入的TrashItems
数组的每个项,并提供..的输出。。
31
32