通过有错误的 Ajax-Request 打印出 HTML 会阻止进一步的 JS 工作

Printing out HTML via an Ajax-Request that is having errors stops further JS from working

本文关键字:进一步 JS 工作 有错误 Ajax-Request 打印 HTML      更新时间:2023-09-26

我对我的网站做了一个小实验。我有一个网站,是空的。然后,它向正在收集随机网站的php文件发出AJAX请求。该网站通过使用多个随机单词进行收集,与它们一起进行搜索请求以谷歌并选择随机结果。然后使用 curl,我按照该结果打印出内容,并将我的 ajax-request 设置为我的 html。然后,通常应该收集下一页。

但是,问题是,在网站加载后,网站本身存在JavaScript错误(可能是因为路径或sth?

我将如何解决这个问题?这是我的代码。正如我所说,这只是一个实验,所以我没有使用原型、类、测试、注释或其他任何东西,只是愚蠢地写下代码

<section id="content">
</section>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
        newSite();
        function newSite()
        {
            $.ajax({
                url: 'sites.php',
                dataType: 'html'
            }).done(function(data) {
                $('#content').html(data);
                $('#content').scrollTop(300);
                newSite();
            });
        }
    });
</script>

这是我获取网站内容并将其打印到 php 文件中的地方(我在这里没有显示完整的代码,因为有些东西你不需要(

$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_URL, $final);
$content = curl_exec($ch);
echo $content;

$final是谷歌结果的网址。有什么想法吗?

如果你想

加载一个随机的网站,你不能只在你自己的文档中插入第一页,该网站通常还有其他文件要加载,有一些相对路径在你的页面中不起作用(JS,images,...(。

您可以剥离JS内容,但是如果没有它,某些站点会中断,即使它们没有,您仍然可能会丢失某些部分。

您可以从PHP代码发送URL,而不是发送内容,并使用window.open显示目标网站(并window.close关闭前一个网站(。

例如:

var windowRef = window.open(url, name);

通常,窗口会在新选项卡中打开。如果name不为空,则窗口将重复使用使用相同name打开的选项卡,而不是打开另一个选项卡。