Извлечение новых данных JSON каждый раз, когда вызывается функция Javascript - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть Java REST API с некоторыми данными JSOn, с которыми я работаю, в javascript.

У меня есть два метода, один для отображения данных, и когда добавлять новые данные:

, поэтому я добавил EventListener в свою первую базу данных для отправки данных:

btn.addEventListener("click", function() {
var request = new XMLHttpRequest();
request.open('GET', 'http://localhost:8084/RestandJson/api/Person');
request.onload = function(){
  var data = JSON.parse(request.responseText);
  addPerson(data);


};
request.send();

});

с помощью метода addPerson следующим образом:

const addPerson = (data) => {
var fName = document.getElementById("fname").value;
var lName = document.getElementById("lname").value;
var age = document.getElementById("age").value;
var id = data[data.length-1].id +1;
const person = {fName, lName, age, id};

data.push(person);
console.log(person);
for(i = 0; i< data.length; i++){
    console.log(data[i]);
}

}

проблема в том, что новые данные генерируются для каждого запроса GET, поэтому я хочу получить данные только один раз и сохранитьчто в массиве, а затем добавить новых людей оттуда.

У меня есть метод, чтобы показать данные JSON, а также после преобразования их в объекты:

Я добавил слушатель события в другойКнопка, как и раньше, где я вызываю этот метод:

render HTML = (data) => {
let htmlString = "";


for(i = 0; i < data.length; i++){
    htmlString += "<p> " + data[i].fName +" " + " " + data[i].lName + " " +  data[i].age  + " " + data[i].id  + "</p>"
}
root.insertAdjacentHTML('beforeend', htmlString);
}

1 Ответ

0 голосов
/ 23 сентября 2018
//bind click event on button to add person info
addPersonbtn.addEventListener('click', function() {
    addPerson();
});


// fetch all person data from api (call this function when app load)
function getPersonList() {
    var request = new XMLHttpRequest();
    request.open('GET', 'http://localhost:8084/RestandJson/api/Person');
    request.onload = function(){
      var data = JSON.parse(request.responseText);
        renderHTML(data);
    };
    request.send();
}

function postPersonData(personInfo) {
    // your api to add single persion info

    // on success call getPersonList(), it will update the list 
}

const addPerson = () => {
var fName = document.getElementById("fname").value;
var lName = document.getElementById("lname").value;
var age = document.getElementById("age").value;
//var id = data[data.length-1].id +1;    // handle it on db side, Primary key, auto generation
const person = {fName, lName, age};
postPersonData(person);

}

renderHTML = (data) => {
let htmlString = "";
for(i = 0; i < data.length; i++){
    htmlString += "<p> " + data[i].fName +" " + " " + data[i].lName + " " +  data[i].age  + " " + data[i].id  + "</p>"
}
root.insertAdjacentHTML('beforeend', htmlString);
}

Я сделал для вас псевдокод, надеюсь, он вам немного поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...