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就不会很开心了。声明新变量时始终使用 letconst.

当你不想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));
}