对于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 ();
?>
////////////////////// 用JS而不是PHP /////////////////////
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>");
}
答案 0 :(得分:4)
无论您使用哪种语言,都必须将JSON字符串解析为对象/数组,修改它,然后将其编码回JSON字符串。不要尝试对JSON字符串进行任何直接字符串操作。 PHP示例:
$arr = json_decode($json, true);
$arr['commentobjects'][] = array('thecomment' => 'jkl');
$json = json_encode($arr);
是否在Javascript或PHP或其他地方执行此操作取决于何时/为何/您需要执行此操作;如果不了解用例,就不可能说出来。
答案 1 :(得分:1)
尝试使用json_encode
和json_decode
PHP函数。
//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)
答案 2 :(得分:1)
只需在javascript中执行:
var x = {"commentobjects":
[
{"thecomment": "abc"},
{"thecomment": "def"},
{"thecomment": "ghi"}
]
};
x.commentobjects.push({"thecomment": "jkl"});
答案 3 :(得分:0)
var THISNEWCOMMENT = 'jkl',
myObj = JSON.parse(rawJson),
newComment = {"thecomment": THISNEWCOMMENT};
myObj.commentobjects.push(newComment);
var serialized = JSON.stringify(myObj);
//send the updated JSON to your controller
解析对象,访问其中的commentobject
列表,在列表中推送新注释,然后再次序列化更新的对象。