JSON 数据入变量
JSON data into variable
编辑:我解决了那个错误,但是,它似乎只打印出一个实例。我怎样才能让它把所有的条目都放入那个变量中?
我对此有点太陌生了,但我正在努力。对不起,如果这个问题听起来很愚蠢。
我已经配置了一个 JSON 服务器,它工作得很好。我可以成功地提取数据,但是,我想将收到的数据放入一个变量中,以便稍后在另一个函数中使用它。为此,我创建了变量 dategraph。但是,它似乎效果不佳。它似乎没有在 $each 循环之外读取它。有什么想法吗?
我尝试在 $each 循环中使用 console.log() 并且它工作正常,但是,它不会在它之外工作。
function solicitare() {
adresa = "http://localhost:4000/listaexamene?callback=?";
$.getJSON(adresa, function (raspuns) {
$.each(raspuns, function (indice, examen) {
continutDeAfisat = "<div><i>Subiect: " + examen.examId + "</i>, Student: " + examen.studentId + "</div>";
$(continutDeAfisat).appendTo("#datenoi");
var dategraph = {};
dategraph.examId = examen.examId;
dategraph.studentId = examen.studentId;
});
console.log(dategraph);
stringNou = JSON.stringify(dategraph);
console.log(stringNou);
});
}
我收到的错误如下:
您正在内部范围内声明变量。所以外部范围不知道那个变量是什么。尝试:
function solicitare() {
const dategraph = {}; // <---
const adresa = "http://localhost:4000/listaexamene?callback=?";
$.getJSON(adresa, function (raspuns) {
$.each(raspuns, function (indice, examen) {
const continutDeAfisat = "<div><i>Subiect: " + examen.examId + "</i>, Student: " + examen.studentId + "</div>";
$(continutDeAfisat).appendTo("#datenoi");
dategraph.examId = examen.examId;
dategraph.studentId = examen.studentId;
});
console.log(dategraph);
const stringNou = JSON.stringify(dategraph);
console.log(stringNou);
});
}
避免使用 var
而是使用 let
。
干脆myNewVariable = {};
就可以了,但是javascript就不会很开心了。声明新变量时始终使用 let
或 const
.
当你不想re-assign一个变量的值时使用const
。
当您将来 re-assign 一个变量的值时使用 let
。
局部箭头函数。而不是做:
$.getJSON(adresa, function (raspuns) {
$.each(raspuns, function (indice, examen) {
你可以这样做:
$.getJSON(adresa, (raspuns) => {
$.each(raspuns, (indice, examen) => {
您通常不想这样做的唯一时间是在 javascript.
中使用 this
关键字时
未使用的局部变量 即 indice
在你的情况下,因为你没有使用它。人们通常做 _
来表示它是一个未使用的变量。因此,您可以使用 _indice
或 _
,或者更简单,只需 (, examen)
.
字符串插值。如您所见,"<div><i>Subject:" + examen.examId + "...."
非常烦人。用 ``
代替 ""
来创建字符串。然后你可以用这样的变量进行字符串插值 ${examen.examId}
.
这就是我要做的。
function solicitare() {
const dategraph = {};
const adresa = "http://localhost:4000/listaexamene?callback=?";
$.getJSON(adresa, (raspuns) => {
$.each(raspuns, (_, examen) => {
const continutDeAfisat = `<div><i>Subiect: ${examen.examId}</i>, Student: ${examen.studentId}</div>`;
$(continutDeAfisat).appendTo("#datenoi");
dategraph.examId = examen.examId;
dategraph.studentId = examen.studentId;
});
console.log(dategraph);
const stringNou = JSON.stringify(dategraph);
console.log(stringNou);
});
}
如果您在 VS 代码中编写 javascript,我还建议您安装一个名为 prettier
的扩展程序,这将有助于格式化您的代码并使其更具可读性。
新问题:我怎样才能保存循环中的所有答案而不只是一个?
试试这个:
首先,制作dategraph
一个数组。然后我们将每个结果对象推入数组。所以像这样:
function solicitare() {
const dategraph = []; // <--- make array
const adresa = "http://localhost:4000/listaexamene?callback=?";
$.getJSON(adresa, (raspuns) => {
$.each(raspuns, (_, examen) => {
const continutDeAfisat = `<div><i>Subiect: ${examen.examId}</i>, Student: ${examen.studentId}</div>`;
$(continutDeAfisat).appendTo("#datenoi");
// push result into array
dategraph.push({
examId: examen.examId,
studentId: examen.studentId,
});
});
console.log(dategraph);
const stringNou = JSON.stringify(dategraph);
console.log(stringNou);
});
console.log("Final dategraph:", JSON.stringify(dategraph, null, 2));
}
编辑:我解决了那个错误,但是,它似乎只打印出一个实例。我怎样才能让它把所有的条目都放入那个变量中?
我对此有点太陌生了,但我正在努力。对不起,如果这个问题听起来很愚蠢。 我已经配置了一个 JSON 服务器,它工作得很好。我可以成功地提取数据,但是,我想将收到的数据放入一个变量中,以便稍后在另一个函数中使用它。为此,我创建了变量 dategraph。但是,它似乎效果不佳。它似乎没有在 $each 循环之外读取它。有什么想法吗? 我尝试在 $each 循环中使用 console.log() 并且它工作正常,但是,它不会在它之外工作。
function solicitare() {
adresa = "http://localhost:4000/listaexamene?callback=?";
$.getJSON(adresa, function (raspuns) {
$.each(raspuns, function (indice, examen) {
continutDeAfisat = "<div><i>Subiect: " + examen.examId + "</i>, Student: " + examen.studentId + "</div>";
$(continutDeAfisat).appendTo("#datenoi");
var dategraph = {};
dategraph.examId = examen.examId;
dategraph.studentId = examen.studentId;
});
console.log(dategraph);
stringNou = JSON.stringify(dategraph);
console.log(stringNou);
});
}
我收到的错误如下:
您正在内部范围内声明变量。所以外部范围不知道那个变量是什么。尝试:
function solicitare() {
const dategraph = {}; // <---
const adresa = "http://localhost:4000/listaexamene?callback=?";
$.getJSON(adresa, function (raspuns) {
$.each(raspuns, function (indice, examen) {
const continutDeAfisat = "<div><i>Subiect: " + examen.examId + "</i>, Student: " + examen.studentId + "</div>";
$(continutDeAfisat).appendTo("#datenoi");
dategraph.examId = examen.examId;
dategraph.studentId = examen.studentId;
});
console.log(dategraph);
const stringNou = JSON.stringify(dategraph);
console.log(stringNou);
});
}
避免使用 var
而是使用 let
。
干脆myNewVariable = {};
就可以了,但是javascript就不会很开心了。声明新变量时始终使用 let
或 const
.
当你不想re-assign一个变量的值时使用const
。
当您将来 re-assign 一个变量的值时使用 let
。
局部箭头函数。而不是做:
$.getJSON(adresa, function (raspuns) {
$.each(raspuns, function (indice, examen) {
你可以这样做:
$.getJSON(adresa, (raspuns) => {
$.each(raspuns, (indice, examen) => {
您通常不想这样做的唯一时间是在 javascript.
中使用this
关键字时
未使用的局部变量 即 indice
在你的情况下,因为你没有使用它。人们通常做 _
来表示它是一个未使用的变量。因此,您可以使用 _indice
或 _
,或者更简单,只需 (, examen)
.
字符串插值。如您所见,"<div><i>Subject:" + examen.examId + "...."
非常烦人。用 ``
代替 ""
来创建字符串。然后你可以用这样的变量进行字符串插值 ${examen.examId}
.
这就是我要做的。
function solicitare() {
const dategraph = {};
const adresa = "http://localhost:4000/listaexamene?callback=?";
$.getJSON(adresa, (raspuns) => {
$.each(raspuns, (_, examen) => {
const continutDeAfisat = `<div><i>Subiect: ${examen.examId}</i>, Student: ${examen.studentId}</div>`;
$(continutDeAfisat).appendTo("#datenoi");
dategraph.examId = examen.examId;
dategraph.studentId = examen.studentId;
});
console.log(dategraph);
const stringNou = JSON.stringify(dategraph);
console.log(stringNou);
});
}
如果您在 VS 代码中编写 javascript,我还建议您安装一个名为 prettier
的扩展程序,这将有助于格式化您的代码并使其更具可读性。
新问题:我怎样才能保存循环中的所有答案而不只是一个?
试试这个:
首先,制作dategraph
一个数组。然后我们将每个结果对象推入数组。所以像这样:
function solicitare() {
const dategraph = []; // <--- make array
const adresa = "http://localhost:4000/listaexamene?callback=?";
$.getJSON(adresa, (raspuns) => {
$.each(raspuns, (_, examen) => {
const continutDeAfisat = `<div><i>Subiect: ${examen.examId}</i>, Student: ${examen.studentId}</div>`;
$(continutDeAfisat).appendTo("#datenoi");
// push result into array
dategraph.push({
examId: examen.examId,
studentId: examen.studentId,
});
});
console.log(dategraph);
const stringNou = JSON.stringify(dategraph);
console.log(stringNou);
});
console.log("Final dategraph:", JSON.stringify(dategraph, null, 2));
}