通过Javascript将数据添加到Server上的现有JSON文件

时间:2014-11-09 11:40:42

标签: javascript ajax json

我有以下问题。我知道这经常讨论安静,我尝试了很多可能性,但是现在还没有工作。

我的javascript文件中有一些数据,我想将其添加到服务器上已存在的.json文件中。我尝试按以下方式执行此操作,但每当我在调用ajax_get_json()之后打开.json文件时,都不会添加新数据。

function ajax_get_json(){
var hr = new XMLHttpRequest();
hr.open('POST', 'myyjson.json', true);
hr.setRequestHeader ("Content-type", "application/x-www-form-urlencoded");
var us = document.getElementById("firstname").value;
var msg= document.getElementById("message").value;
hr.onreadystatechange= function(){
    if (hr.readyState == 4 && hr.status == 200){
    var obj = JSON.parse(hr.responseText);
    obj['participant'].push({"user": us, "message": msg});
    var sendingObj =JSON.stringify(obj);
    }
}
hr.send (sendingObj);

}

我的myjson.json文件具有以下结构:

{ "participant":[
{"user":"Steven", "message":" Hey,i m in!"}, 
{"user":"Tim", "message":" i wrote sth."},
{"user":"lukas", "message":"example"}
]}     

有没有人知道你遇到的问题是什么,或者有更好的方法吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

在客户端使用javascript,无法在服务器上编写JSON。如果可能的话,那从安全角度来看会有点糟糕。您需要在服务器上使用您在那里使用的语言(PHP,Java,javaScript)编写JSON。然后,您可以使用AJAX从客户端调用该服务器函数。它可以是这样的:

  1. 客户端请求的Javascript,例如url www.yourserver.com/writejson.php?u=steven&m=Hi

  2. 在服务器上捕获该请求并写入JSON文件。用户名为steven,邮件为Hi

  3. 顺便说一下,你误解了XMLHttpRequest.send方法。您没有发送要保存在服务器上的数据。你正在解雇XMLHttpRequest。以下是您的代码执行方式的演练:

    function ajax_get_json(){
    var hr = new XMLHttpRequest(); // 1.
    hr.open('POST', 'myyjson.json', true); // 2.
    hr.setRequestHeader ("Content-type", "application/x-www-form-urlencoded"); // 3.
    var us = document.getElementById("firstname").value; // 4.
    var msg= document.getElementById("message").value; // 5.
    hr.onreadystatechange= function(){ // 6.
        if (hr.readyState == 4 && hr.status == 200){ // 8. this is called every time XMLHttpRequest state changes
        var obj = JSON.parse(hr.responseText); // 9. this is called when XMLHttpRequest is completed and response is gotten
        obj['participant'].push({"user": us, "message": msg}); // 10.
        var sendingObj =JSON.stringify(obj); // 11.
        }
    }
    hr.send (sendingObj); // 7. sendingObj is undefined