我正在写一个简单的删除功能。此函数删除PHP正在输出的列表中的条目。这就是:
$(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
根据json_decode上的PHP手册,如果JSON无效,则输出null。
所以我的问题是:如何在我的javascript中正确格式化JSON?这样它就可以传递给PHP并转换为PHP数组。
其他信息: 当成功转换为PHP数组时,我将使用implode来放置&#34;或者&#34;在数组值之间,将其转换为字符串并在我的SQL查询WHERE语句中使用它来删除在我的页面上检查的项目。
答案 0 :(得分:1)
为了使现有的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