Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 试图构建查询字符串并获取Google结果_Javascript_Google Chrome Extension_Xmlhttprequest - Fatal编程技术网

Javascript 试图构建查询字符串并获取Google结果

Javascript 试图构建查询字符串并获取Google结果,javascript,google-chrome-extension,xmlhttprequest,Javascript,Google Chrome Extension,Xmlhttprequest,我正在尝试构建一个Google查询字符串,向该页面发出请求,刮取HTML,并在一个Chrome扩展(JavaScript)中解析它。因此,我有以下代码: var url = "https://www.google.com/search?#q=" + artist + "+" + title; searchGoogleSampleInformation(url); function searchGoogleSampleInformation(url) { var xhr = new XM

我正在尝试构建一个Google查询字符串,向该页面发出请求,刮取HTML,并在一个Chrome扩展(JavaScript)中解析它。因此,我有以下代码:

var url = "https://www.google.com/search?#q=" + artist + "+" + title;
searchGoogleSampleInformation(url);

function searchGoogleSampleInformation(url)
{
    var xhr = new XMLHttpRequest();
    xhr.open("GET", url, false);
    xhr.onreadystatechange = function ()
    {
        if (xhr.readyState == 4)
        {
            return parseGoogleInformation(xhr.responseText, url);
        }
    }

    xhr.send();
}

function parseGoogleInformation(search_results, url)
{
    var link = $(".srg li.g:eq(0) .r a", search_results).attr('href');
}

parse方法只是获取第一个搜索结果的url(这不是我最后要做的,只是为了测试HTTP请求是否正常工作)。但是
链接
在该行之后是
未定义的
。然后我使用
alert(url)
并验证我的查询字符串是否正确构建;我从“警报”窗口复制了它并粘贴到另一个选项卡上,它按预期调出了结果。然后,我打开了一个新窗口,显示了
搜索结果
,它似乎是谷歌的常规主页,根本没有搜索功能。我认为这个问题可能是由于
xhr.open
调用的异步性造成的,但翻转也没有帮助。我是否遗漏了一些明显的内容?

您正在进行跨域Ajax调用,这在默认情况下是不允许的。除非服务器支持跨域调用,并且您传递了相应的头,否则无法进行跨域调用


但是,正如您所提到的,您正在构建一个Chrome扩展,可以在清单文件中添加几个字段:

这是因为
“https://www.google.com/search?#q=“+艺术家+”+“+标题
最初在内容中没有搜索结果。Google最初呈现页面时没有结果,然后通过JavaScript动态加载结果。由于您只是获取页面的HTML并对其进行处理,因此HTML中的JavaScript永远不会执行。

否,我在manifest.json中有google,并且控制台中没有出现跨域错误。您检查过search\u results变量吗?另外,答复的格式是什么?是JSON/HTML吗?google.com主页上似乎有一个可用的函数$,但我相信通过XHR得到的响应不会出现在DOM中,不是吗?是的,这就是问题所在。有没有办法在Chrome扩展中处理这个问题?我以前在这里也问过类似的问题,但什么也没有得到,我通读了这篇文章,一个选项似乎是在选项卡中打开URL并注入脚本来解析呈现的结果。