Javascript 从远程位置获取页面源几乎可以工作-只需将结果放入变量中即可

Javascript 从远程位置获取页面源几乎可以工作-只需将结果放入变量中即可,javascript,Javascript,在浏览了以前的帖子和其他搜索结果之后,我似乎能够得到我想要的东西,但它似乎是一个数据对象,而不是我可以分配给变量的文本 在我工作的环境中,我仅限于javascript,我想做的是对返回的数据使用字符串函数,以便搜索某些术语 这是返回数据对象的url格式-结果是要求您打开或保存文本文件: http://query.yahooapis.com/v1/public/yql?q=select%20*%20来自%20html%20其中%20url%20%3D%20%22http://www.redrag.

在浏览了以前的帖子和其他搜索结果之后,我似乎能够得到我想要的东西,但它似乎是一个数据对象,而不是我可以分配给变量的文本

在我工作的环境中,我仅限于javascript,我想做的是对返回的数据使用字符串函数,以便搜索某些术语

这是返回数据对象的url格式-结果是要求您打开或保存文本文件:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20来自%20html%20其中%20url%20%3D%20%22http://www.redrag.info/index.htm%22%20and%20xpath%3D%22*%22&format=xml&callback=cbfunc

(如果您愿意,可以将上面示例中的我的url替换为您自己的url)

我是否可以使用一些javascript文档函数将此输出分配给变量,而不是打开文本文件


谢谢

删除
callback=cbfunc
并定义您的回调函数。您可以从
format=xml
更改
format=json
,因为它很容易处理。现在,您可以获取数据,并对这些数据执行任何操作

$.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%20%3D%20%22http://www.redrag.info/index.htm%22%20and%20xpath%3D%22*%22&format=json",
function(data) {
    alert(data);
}
);

这需要(通过内联脚本解析响应),对于像jQuery这样的库来说非常简单:

$.ajax({
  url: the_url,
  jsonpCallback: 'cbfunc',
  dataType: 'jsonp'
})
.success(function(data) {
    alert(data.query.created);
});

除了上面@kriyeta给出的第一个答案,我的代码运行良好,如下代码段所示:

    <html>
    <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    </head>
    <body>
    <script>
    var inputxt="http://www.redrag.info/index.htm";
    var pagesrc;

    $.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%20%3D%20%22"+inputxt+"%22%20and%20xpath%3D%22*%22&format=json",
    function(data) {
    pagesrc=JSON.stringify(data);
    alert(pagesrc);
    }
    );
    </script>
    </body>
    </html>

var inputxt=”http://www.redrag.info/index.htm";
var-pagesrc;
$.getJSON(“http://query.yahooapis.com/v1/public/yql?q=select%20*%20从%20html%20其中%20url%20%3D%20%22“+inputxt+%22%20和%20xpath%3D%22*%22&format=json”,
功能(数据){
pagesrc=JSON.stringify(数据);
警报(pagesrc);
}
);
但当我将其用作目标URL时:
https://ajax.googleapis.com/ajax/services/search/images?v=1.0%26q=DOG
(如果将其放入浏览器地址栏以查看实际页面,则需要将%26更改回&)我收到一条“疑似服务条款滥用”的消息,因为我认为谷歌可以确定这是一个自动请求,而不是人工请求

我试图实现的是一个脚本,我可以使用AI虚拟助手设施,我目前正在开发知识库。如果谷歌url没有失败,那么上面的代码就是我需要的

这是为了回答访客的请求,例如“给我看一张狗的照片”。另一个人工智能机器人——
https://ask.pannous.com/
正是这样做的——当被问到同样的问题时,它会从(我假设是)谷歌图片中检索一张图片——所以我知道这是可以做到的,我渴望拥有一个类似的工具

我想如果我能找到一个不依赖jQuery库的解决方案,那么它可能会工作


谢谢你的建议。谢谢

欢迎来到StackOverflow(SO)!你说获取页面源代码几乎是可行的,但在这个问题上没有证据。请包括您尝试使用的代码以及遇到的错误。Hi@Artjom B.-通过“几乎有效”我的意思是,它几乎实现了我的目标——如果你打开它提供的url来保存一个文本文件或打开记事本并显示它,而我想做的是将此文本分配给一个变量,并完美地工作——感谢你的贡献——非常感谢@kriyeta——有没有一种方法可以在没有使用jquery库,因为我的一个目标URL在检测到jquery.js时失败reason@RedRag这已经在感谢@kriyeta中得到了很好的解释,我检查了你建议的那篇文章,做了几个JSFIDDLE——第一个是使用jquery库工作的——然后另一个是使用你建议的带有“no library”集的文章中的代码在没有jquery的情况下进行测试——这不会产生结果,所以可能我误解了如何应用那篇文章中的代码?嗨@Alex,尽管我无法在JSFIDLE中使用它,但我还是为此向您表示感谢。我看到了-我将JSFIDLE中的alert(data.query.created)更改为alert(JSON.stringify(data)),并看到它确实有效。谢谢