我有以下问题。我知道这经常讨论安静,我尝试了很多可能性,但是现在还没有工作。
我的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"}
]}
有没有人知道你遇到的问题是什么,或者有更好的方法吗?
提前致谢!
答案 0 :(得分:1)
在客户端使用javascript,无法在服务器上编写JSON。如果可能的话,那从安全角度来看会有点糟糕。您需要在服务器上使用您在那里使用的语言(PHP,Java,javaScript)编写JSON。然后,您可以使用AJAX从客户端调用该服务器函数。它可以是这样的:
客户端请求的Javascript,例如url www.yourserver.com/writejson.php?u=steven&m=Hi
在服务器上捕获该请求并写入JSON文件。用户名为steven
,邮件为Hi
。
顺便说一下,你误解了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