【问题标题】:AJAX request to get results from Google从 Google 获取结果的 AJAX 请求
【发布时间】:2010-01-19 22:46:16
【问题描述】:

我想修改this AJAX example 中的代码以从 Google 获取结果。

我使用 Random() 方法调用将其排除在外,但是如何处理 JavaScript 中的查询字符串?我怎样才能最好地使用XMLHttpRequest 手动构建请求(这是为了测试所以必须手动完成,而不是使用框架)。

谢谢

【问题讨论】:

    标签: javascript xml ajax xmlhttprequest


    【解决方案1】:

    您不能将XMLHttpRequesthttp://www.google.com/... 之类的绝对网址一起使用。

    浏览器会阻止cross-site scripting。你必须使用相对路径,否则大多数浏览器只会返回一个空的responseText

    作为一种可能的解决方法,您可以设置一个非常简单的reverse proxy(如果您使用的是 Apache,则使用mod_proxy)。这将允许您在 AJAX 请求中使用相对路径,而 HTTP 服务器将充当任何“远程”位置的代理。

    mod_proxy 中设置反向代理的基本配置指令是 ProxyPass。您通常会按如下方式使用它:

    ProxyPass     /ajax/     http://www.google.com/search
    

    在这种情况下,浏览器会请求/ajax/?hl=en&source=hp&q=test,但实际上服务器会通过充当http://www.google.com/search?hl=en&source=hp&q=test 的代理来提供此服务。

    如果您使用的是 IIS,您可能需要使用Managed Fusion URL Rewriter and Reverse Proxy 来设置反向代理。

    【讨论】:

    • 那么一个仅在同一台服务器上的相对 url?我可以在我的桌面上使用本地文件(例如读取)吗?
    • 基本上是的。必须使用相对 URL 访问这些文件,就像您提供的 w3schools 示例中的那样。但是,请查看我的更新答案,了解使用反向代理的可能解决方法。
    • 好答案。只有一件事:因此,如果我在本地浏览器上运行一个页面,我仍然可以使用可能位于同一文件夹中的文件吗?虽然仅限本地。我今天尝试了这个但得到了 0(基本上没有在填充的 .txt 文件中读取)。
    • 可以,只要您不使用像"file:///C:/path_to/file.txt" 这样的文件路径。只需在XMLHttpRequest.open() 中使用"file.txt"
    • 啊,我不在这个帖子上的时候试过了,现在正在工作。一定是对我的工作机器有一些疏忽。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-02
    • 2013-04-14
    • 1970-01-01
    • 2015-01-06
    • 2012-09-02
    • 2014-08-23
    • 2020-12-24
    相关资源
    最近更新 更多