1

我编写测试代码,在 php 页面上发布数组。PHP页面需要将此数组写入文件以检查数据。

查询:

    $("#Trash").click(function () {
    $.post("tests.php",
    {'ids[]': ArrayCheckBox},
        function(result){
            window.location = 'tests.php';
         }
      );
    });

在 tests.php 我试图解析:

            $s = array();
            foreach ($_POST as $k => $v) {
              if (is_array($v)) {
                if ($v=='ids[]')
                  array_push($s, $v[0]);
              }
            }

            $file = $_SERVER['DOCUMENT_ROOT'] .'/test2.txt';
            $current = file_get_contents($file);
            $current .= implode(', ', $s); 
            file_put_contents($file, $current);

但是这段代码每次只写“1”。怎么修的?

4

1 回答 1

1

因此,您的 javascript 看起来非常接近。唯一让我觉得奇怪的是你在 ids[] 之后使用了方括号,我想因为它是一个数组——你不需要这样做。

$("#Trash").click(function () {
    $.post("tests.php",
        {'ids': ArrayCheckBox},
        function(result){
            window.location = 'tests.php';
        }
    );
});

但我也对你的变量 ArrayCheckBox 有点困惑——它应该包含什么?这是您准备发布的一组值吗?还是像复选框一样的实际 Dom 对象?如果是这样,您需要在发布之前先获取原始数据。

继续——你的 PHP 代码让我有点困惑。

一旦你的 javascript 访问了 tests.php,PHP 就会在 $_POST 中使用你的数据开始,它看起来像这样:array('ids'=>array('1','2','3',... ))。

你希望你的文件是什么样子的?获取整个数组并将其写入文件的最简单方法之一是使用 json:

<?php
$json = json_encode($_POST);
$file = $_SERVER['DOCUMENT_ROOT'] .'/test2.txt';
file_put_contents($file, $json);
?>

看起来您正试图对照已有的数据检查数据,对吗?如果是这样,您可以执行以下操作:

<?php
$json = json_encode($_POST);
$file = $_SERVER['DOCUMENT_ROOT'] .'/test2.txt';
$current_contents = file_get_contents($file);
if ($current_contents == $json) {
    echo "Data is still the same as what was already there.";
}
else {
    echo "Data has changed."
}
?>

如果您还有其他问题,请告诉我。

于 2013-07-17T16:48:14.443 回答