gpt4 book ai didi

javascript - 如何正确加载 URL 并访问其内容

转载 作者:行者123 更新时间:2023-12-02 14:21:39 25 4
gpt4 key购买 nike

我正在尝试创建一个显示 JSON 内容的网页。我不想手动编写包含数百个条目的 JSON 文件,而是想加载给定 url 的 html 并将其内容转换为 JSON 文件。

我对 javascript 和 jquery 非常陌生,所以我正在做一些练习网页来巩固我所学到的知识。对于这个实践项目,我想访问这个网页:http://dogtime.com/dog-breeds ,遍历并显示其内容中的一些元素。 我所困扰的是如何从给定的网址检索 html。

我目前正在尝试此代码:

//When the document is ready
$(document).ready(function() {
//Use ajax to load this webpage
$.get("http://tired.com/", function(data) {
//Load its data into the data variable
var data = $(data);
//Put the webpage into the variable with id "div"
$("#div").html(data);
});
})

但是在控制台中我收到错误:

“XMLHttpRequest 无法加载 http://tired.com/ 。请求的资源上不存在 'Access-Control-Allow-Origin' header 。因此不允许访问 Origin 'null'。”

我读了这篇文章:"No 'Access-Control-Allow-Origin' header is present on the requested resource"但我真的不明白如何从中得到解决方案。我收集的一些可能的解决方案可能是:

  1. 在 Windows 中,将此命令粘贴到运行窗口中:

    chrome.exe --user-data-dir="C:/Chrome 开发 session "--disable-web-security

这似乎只是一个创可贴,无法长期发挥作用。

  • 使用 CORS:http://www.html5rocks.com/en/tutorials/cors/
  • 这是否只有在客户端和服务器都支持 CORS 的情况下才有效?我也无法理解在哪里放置/如何使用此代码,因为只显示了函数片段,并且该示例似乎不起作用。

  • 下载 HTML 页面并解析它们。
  • 这似乎又是一个可以避免问题的修复方法。

    这是我的全部代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <link href="bootstrap-3.3.6-dist/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <!--JSON file where I'll be storing some content-->
    <script src="breeds.js"></script>
    </head>

    <script>
    //When the document is loaded
    $(document).ready(function() {
    //Use Ajax to load the webpage
    $.get("http://tired.com/", function(data) {
    //Load the webpage into the data variable
    var data = $(data);
    //Load the html from the webpage into the element with id "div"
    $("#div").html(data);
    });
    })
    </script>

    <body>
    <div id="div"></div>​
    </body>
    </html>

    我非常感谢您解释如何使该代码工作。谢谢!

    编辑:所以我使用Python的BeautifulSoup来创建我的JSON文件,但我无法使用javascript来读取它:

    $.getJSON("breeds.json", function(json) {
    console.log(json);
    })

    因为它会导致与以前相同的 XMLHttpRequest 错误。我已使用 http://www.freeformatter.com/json-validator.html 验证我的 JSON 文件是否已正确创建。我能找到的唯一解决方案是将 json 文件更改为 js 文件,并将 json 内容转换为全局内容,例如:

    breeds = '{"dogBreeds": [{"size": "1", "shedding": "1", "link": "http://dogtime.com/dog-breeds/affenpinscher", "energy": "4", ....."Yorkshire Terrier", "intelligence": "3"}]}'

    然后我可以使用以下方式阅读:

    window.onload = function() {
    var obj = JSON.parse(breeds);
    console.log(obj.dogBreeds[0].breedName);
    }

    有更好的方法吗?

    最佳答案

    正如您提到的,解决方案是解析远程 html(Beautiful Soup 非常适合此操作)并在服务器上将其序列化为 JSON。

    最后一件事:如果您直接在浏览器中打开“index.html”文件,您将继续收到相同的“请求的资源上不存在“Access-Control-Allow-Origin” header ”错误。您需要在服务器上提供网页,或者只运行本地主机。由于您已经在使用 Python,因此最简单的方法是打开命令提示符,进入保存 html 文件的目录,然后运行以下命令:

        $ python -m SimpleHTTPServer

    然后打开http://localhost:8000在您的浏览器中。 json 应该可以正常加载。

    关于javascript - 如何正确加载 URL 并访问其内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38600888/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com