Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery-在php上发布数组并写入文件_Php_Jquery - Fatal编程技术网

JQuery-在php上发布数组并写入文件

JQuery-在php上发布数组并写入文件,php,jquery,Php,Jquery,我编写测试代码,即php页面上的post数组。Php页面需要将此数组写入文件以检查数据 JQuery: $("#Trash").click(function () { $.post("tests.php", {'ids[]': ArrayCheckBox}, function(result){ window.location = 'tests.php'; } ); }); 在tests.php

我编写测试代码,即php页面上的post数组。Php页面需要将此数组写入文件以检查数据

JQuery:

    $("#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”。怎么修好的

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

$("#Trash").click(function () {
    $.post("tests.php",
        {'ids': ArrayCheckBox},
        function(result){
            window.location = 'tests.php';
        }
    );
});
但我对变量ArrayCheckBox也有点困惑——它应该包含什么?这是您准备发布的值数组吗?或者这是一个实际的Dom对象,类似于复选框?如果是这样,您需要在发布原始数据之前先将其取出

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

一旦您的javascript点击tests.php,php将以$\u 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."
}
?>


如果您还有任何问题,请告诉我。

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

$("#Trash").click(function () {
    $.post("tests.php",
        {'ids': ArrayCheckBox},
        function(result){
            window.location = 'tests.php';
        }
    );
});
但我对变量ArrayCheckBox也有点困惑——它应该包含什么?这是您准备发布的值数组吗?或者这是一个实际的Dom对象,类似于复选框?如果是这样,您需要在发布原始数据之前先将其取出

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

一旦您的javascript点击tests.php,php将以$\u 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."
}
?>


如果您还有任何问题,请告诉我。

您可以输出$U POST或$v的内容吗??当您将$s变量保存到文件中(在您的foreach循环之后)时,它是什么样子的?可能会将其作为json发送,而不是传递ArrayCheckBox引用?不是JQuery专家,但我建议在发布时在名称中使用方括号,以便在传递到PHP脚本之前,PHP可以将其解释为数组。因此$\u POST项的名称将为“ids”。整个if($v=='ids[])。。。在我看来是不对的。当然,您需要类似于if(!strcmp($k,'id'))的东西。。。或者使用不太可靠的“==”,如果($k=='ids')。。。在您的foreach中,$k将保存元素名称/键,$v将保存值。我还想知道为什么您似乎只对复选框数组的第一个元素($v[0])感兴趣。你不应该使用foreach来迭代数组。你能输出$u POST或$v的内容吗??当您将$s变量保存到文件中(在您的foreach循环之后)时,它是什么样子的?可能会将其作为json发送,而不是传递ArrayCheckBox引用?不是JQuery专家,但我建议在发布时在名称中使用方括号,以便在传递到PHP脚本之前,PHP可以将其解释为数组。因此$\u POST项的名称将为“ids”。整个if($v=='ids[])。。。在我看来是不对的。当然,您需要类似于if(!strcmp($k,'id'))的东西。。。或者使用不太可靠的“==”,如果($k=='ids')。。。在您的foreach中,$k将保存元素名称/键,$v将保存值。我还想知道为什么您似乎只对复选框数组的第一个元素($v[0])感兴趣。您不应该使用foreach来迭代数组。