javascript - 我想通过 API 解析 JSON 数据并将其公开发布在我的本地网站上

标签 javascript html

目前,我正在加载 zomato 餐厅 api,并且我有一个 api key 。当有人在表单中输入输入后,我尝试通过搜索查询发布数据。我遇到了有关该项目的各种问题。第一个问题是我想完全在本地完成此操作,但我使用 API,根据我的理解,这需要我有一些存储数据的后端部分。

有没有办法将数据临时存储到本地存储中而不会出现问题?或者是我在没有后端的情况下主要使用 https://jsonplaceholder.typicode.com/ 做某事的唯一希望.

目前这是我的代码,一旦搜索查询完成并检索数据,我想要附加一些 div。看了几个关于这个主题的视频,想使用 fetch 来获取数据,但我认为我的代码是一团糟。抱歉,我很难找到有关此主题的简明信息。

``
const searchForm = document.querySelector('form');
const resultsArea = document.getElementById('#restaurant_results');


var api = 'https://developers.zomato.com/api/v2.1/restaurant?res_id=16774318';
var city = Bethesda;
var APIkey = 'd40175980577c1cb4df25d608886594b';
var url = 

document.querySelector('.submit-btn').addEventListener('click', GetPosts);


function GetPosts (){
    fetch('https://jsonplaceholder.typicode.com/posts')
    .then((res) => res.json())
    .then((data) => {
        let output = '<h2>Get Posts</h2>';
        data.forEach(function(post){
            output+=`
            <div>
                <h2>${post.title}</h2>
                <p>${post.body}</p>

            </div>
            `;
        });
        document.getElementById('restaurant_results').innerHTML = output;

    })
}

``

``

  <body>
    <h1> Restaurant Finder</h1>
<div class="wrapper">
   <form action="">
   <div class="form-wrapper">
       <label for="restaurant-name">Search</label>
       <input type="restaurant-name" type="text" id="restaurant-name" placeholder="Search for a restaurant">
   </div>
   <div class="form-wrapper">
       <label for="city-name">City</label>
       <input type="city-name" type="text" id="city-name" value="Bethesda" value="New York" disabled>
   </div>
   <input type="submit" class="submit-btn">
</form>
<hr>
<section id="restaurant_results">

<div class="result_card">
    <div class="result_header">
        <h2 class="result_title">${title}</h2>
        <h3 class="result_location result_neighborhood">${neighborhood}</h3>
        <h3 class="result_location result_address">${address}</h3>
        <p class="result_price">${price}</p>
        <!--<p>${cuisine type}</p>-->
    </div>

    <div class="result_body">
    </div>
    <div class="result_footer">
        <button class="result_footer_button">Call</button>
        <button class="result_footer_button"><a href="" target="_blank" class="result_website">Visit website</a></button>
        <button class="result_footer_button">Make reservation</button>
    </div>
</div>

</section>
``

最佳答案

不,对于本地运行的简单 JS 应用程序,您不需要 Web 服务器。您的代码有很多错误,但您遇到的主要问题是您在注册事件监听器后定义了 GetPost (.addEventListener('click', GetPosts);) 。将 document.querySelector('.submit-btn').addEventListener('click', GetPosts); 放在 GetPost 函数之后。此外,您还需要阻止表单提交(因为您没有可以访问的后端服务器)。您可以使用preventDefault()来做到这一点方法。

function GetPosts(e) {
  e.preventDefault();
...
}

对于您的简单项目,我建议查看 jquery

请记住使用 console.log 进行调试,祝您在学习 JS 和 HTML 基础知识的过程中好运。

附注 掌握基础知识后,请研究合适的 JS 框架,例如 react , vueangular

关于javascript - 我想通过 API 解析 JSON 数据并将其公开发布在我的本地网站上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58440780/

相关文章:

javascript - 在 JavaScript 类 : this vs. var 中声明变量。区别?

jquery - 使用 Fancybox3 创建自动播放幻灯片

html - CSS 悬停在显示另一个不透明的图像上

javascript - 获取包含 li 标签的 id

javascript - 如何编写进度条

javascript - 在 Jade 中循环并显示来自 Mongodb 的数据

JAVASCRIPT + HTML 按钮值与 getElements

asp.net - 从回发的 URL 中删除#FragmentIdentifier

c# - 从 MVC 中的模型数据中选定的下拉列表项动态更改 View

javascript - 在 IFrame src 属性中执行内联 JavaScript 代码