根据来自带有 JQuery 的 REST API 的 JSON 响应更改 HTML 结构

Posted

技术标签:

【中文标题】根据来自带有 JQuery 的 REST API 的 JSON 响应更改 HTML 结构【英文标题】:Change HTML structure according to JSON response from a REST API with JQuery 【发布时间】:2021-10-01 09:10:12 【问题描述】:

我有一个 REST API,它返回这样的 JSON 对象


 "id": 1,
 "status": "open"

其中状态可以是“打开”或“关闭”。我在一个带有 JQuery 函数的 html 页面中调用这个 API:

<html>
<body>
</body>
<script>

    $(document).ready(function() 
          $.getJSON("http://localhost:8080/api/question/1", function(data)
           
    
          );
        );
</script>

如果返回的 JSON 对象的状态为“打开”,我想将我的 HTML 页面更改如下

<html>
    <body>
<p>THE QUESTION IS OPEN</p>
    </body>
    <script>
    
        $(document).ready(function() 
              $.getJSON("http://localhost:8080/api/question/1", function(data)
               
        
              );
            );
    </script>

否则,如果返回的 JSON 对象的状态为“关闭”,我想将我的 HTML 页面更改如下

<html>
    <body>
<p>THE QUESTION IS CLOSED</p>
    </body>
    <script>
    
        $(document).ready(function() 
              $.getJSON("http://localhost:8080/api/question/1", function(data)
               
        
              );
            );
    </script>

使用 JQuery 实现这一目标的最佳方法是什么?

【问题讨论】:

函数(数据) if(data.status == "open") ? var statusText = "问题未解决" : var statusText = "问题已关闭"; document.getElementsByTagName("p")[0].innerHTML = statusText; 如果答案对您有帮助,请将其标记为正确。 【参考方案1】:

您可以使用$('body').prepend() 将数据放在打开的&lt;body&gt; 标记之后

$(document).ready(function() 
  $.getJSON("http://localhost:8080/api/question/1", function(data) 
    if (data.status) 
      let str = `The Question is $data.status`.toUpperCase()
      $('body').prepend(`<p>$str</p>`)
    
  );
);

// for the example

let data = 
  "id": 1,
  "status": "open"

if (data.status) 
  let str = `The Question is $data.status`.toUpperCase()
  $('body').prepend(`<p>$str</p>`)
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

【参考方案2】:

您的 JSON 对象中有 idstatus。 如果您要在同一页面上有多个问题的状态段落,您可以这样做:

$(document).ready(
  function() 
    $.getJSON("http://localhost:8080/api/question/1", function(data) 
      let statusParagraph = document.getElementById("status-" + data.id);
      let statusText;
      if (data.status === "open") 
        statusText = "THE QUESTION IS OPEN";
       else if (data.status === "closed") 
        statusText = "THE QUESTION IS CLOSED";
      

      statusParagraph.innerHTML = statusText;
    );
  );
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<html>
  <body>
    <p id="status-1"></p>
    <p id="status-2"></p>
  </body>
</html>

【讨论】:

以上是关于根据来自带有 JQuery 的 REST API 的 JSON 响应更改 HTML 结构的主要内容,如果未能解决你的问题,请参考以下文章

使用 JSONP 和 JQuery 调用 REST Api

带有REST和Open API的gRPC

如何在 AngularJS 中处理来自 REST Api 的日期字段?

Swift 错误类型服务器响应来自 REST API 的错误输入

如何使用来自 postmnan 本机应用程序的 gmail rest api 发送邮件

根据 REST API 权限呈现 HTML