【发布时间】:2014-08-29 12:34:49
【问题描述】:
我正在编写一个简单的删除函数。此函数删除 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
根据 json_decode 的 PHP 手册,如果 JSON 无效,则输出 null。
所以我的问题是:如何在我的 javascript 中正确格式化 JSON?这样它就可以传递给PHP并转换为PHP数组。
附加信息: 成功转换为 PHP 数组后,我将使用 implode 在数组值之间放置“OR”,将其转换为字符串并在我的 SQL 查询 WHERE 语句中使用它来丢弃在我的页面上检查的项目。
【问题讨论】:
-
从 jQuery 向 PHP 发送数组时不需要使用 JSON。如果你发送数组,jQuery 会对其进行正确的 URL 编码,PHP 会自动对其进行解码。
-
非常正确 - 我已经稍微扩展了我的答案以包含该选项。
标签: javascript php jquery arrays json