1

PHP/HTML ページの場合、JSON にデータを追加する最も簡単な方法は何ですか? PHP、JS、または jQuery を使用する必要がありますか?

オンラインで見つけたさまざまな方法をさまざまに試しましたが、うまくいきません。私はこれらすべてを試しましたが、うまくいきません。

 var myObject = new Object();
 JSON.stringify()
 JSON.parse()
 $.extend();
 .push()
 .concat()

このJSONファイルをロードしました

    {"commentobjects": 
        [
                {"thecomment": "abc"},
                {"thecomment": "def"},
                {"thecomment": "ghi"}
            ]
    }

プログラムで追加したい

    var THISNEWCOMMENT = 'jkl;
    {"thecomment": THISNEWCOMMENT}

JSON変数が

    {"commentobjects": 
        [
                {"thecomment": "abc"},
                {"thecomment": "def"},
                {"thecomment": "ghi"},
            {"thecomment": "jkl"}
        ]
    }

/////////////////// 回答後に編集 /////////////////

これは、PHP 関数を呼び出すために使用した index.php ファイルの ajax です (別のファイルで)。

    function commentSaveAction ()
    {
        var mytext = $(".mycommentinput").val();
        mytext = mytext.replace("\"","'");

            $.ajax({
                url: 'php/commentwrite.php',
                data: { thePhpData: mytext },
                success: function (response) {
               }
            });
    }

そして、これは私が deceze の助けを借りて使用した完成した PHP 関数です:

    <?php

    function writeFunction () 
    {
        $filename = '../database/comments.txt';

        $arr = json_decode(file_get_contents($filename),true);
        $myData = $_GET['thePhpData'];  

        $arr['commentobjects'][] = array('thecomment' => $myData);
        $json = json_encode($arr);

        $fileWrite=fopen($filename,"w+");
        fwrite($fileWrite,$json);
        fclose($fileWrite);
    }
    writeFunction ();   

    ?>

////////////////////// PHP ではなく JS を使用 /////////////////////

        var myJsonData;

        function getCommentData ()
        {
            $.getJSON('database/comments.txt', function(data) {

                myJsonData = data;

                var count = data.commentobjects.length;
                for (i=0;i<count;i++) {
                    $(".commentbox ul").append("<li>"+data.commentobjects[i].thecomment+"</li>");
                }
            }); 
        }

        function commentSaveAction ()
        {
            var mytext = $(".mycommentinput").val();
            mytext = mytext.replace("\"","'");

            myJsonData.commentobjects.push({"thecomment": mytext});

            var count = myJsonData.commentobjects.length;
            $(".commentbox ul").append("<li>"+myJsonData.commentobjects[count-1].thecomment+"</li>");
        }
4

4 に答える 4

1

json_encodejson_decodePHP 関数を試してみてください。

//work on arrays in php
$arr = array('sth1', 'sth2');

//here you have json
$jsonStr = json_encode($arr);

//array again
$arrAgain = json_decode($jsonStr);

$arrAgain[] = 'sth3';
//json again
$jsonAgain = json_encode($arrAgain)
于 2013-07-11T07:30:18.590 に答える
1

JavaScriptでそれを行うだけです:

var x = {"commentobjects": 
    [
            {"thecomment": "abc"},
            {"thecomment": "def"},
            {"thecomment": "ghi"}
    ]
};

x.commentobjects.push({"thecomment": "jkl"});
于 2013-07-11T08:04:41.980 に答える