【问题标题】:How can I request a url using AJAX如何使用 AJAX 请求 url
【发布时间】:2011-08-28 18:22:20
【问题描述】:

我是这个领域的新手。 我需要了解如何使用 Ajax 向我的 solr 服务器发出请求 如何在请求中提供 url(我的 solr 服务器的 url) 有没有人知道如何处理这个问题? 我如何向下面提到的 url 提出请求

http://mysite:8080/solr/select/?q=%2A%3A%2A&version=2.2&start=0&rows=100&indent=on

参见此处:更正代码片段如下

function getProductIds() {
    var xmlhttp;
    if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest();
    else xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) console.dir(xmlhttp);
        else alert('no response');
        var ajaxURL = "http://localhost:8080/solr/select/?q=*:*&version=2.2&start=0&rows=100&indent=on";
        xmlhttp.open("GET", ajaxURL, true);
        xmlhttp.send();
    }

这是我的代码,它总是显示“无响应”
谢谢。

【问题讨论】:

    标签: javascript ajax url post get


    【解决方案1】:

    您必须在发送请求之前准备 URL,首先使用 javascript 获取 URl,然后将其编码为 ajax 格式,如下所示

    var URL = location.href;
    var ajaxURL = encodeURIComponent(URL);
    xmlhttp.open("GET",ajaxURL,true);
    

    清楚地阅读您的问题后,它似乎是一个静态 URL,因此您可以在下面进行操作

    var URL = "http://localhost:8080/blah blah blah";
    xmlhttp.open("GET",URL,true);
    

    您确定是获取请求吗?因为 get 请求大部分时间都被缓存了。还将响应对象记录到 Firebug 控制台并检查对象以了解更多信息。由于您没有收到任何响应,这意味着服务器没有针对您提出的请求向您发送任何内容。

    【讨论】:

    • @Nikhil 成功了。在它起作用之前我不会休息:D顺便说一句,如果它回答了,请点击投票控件下方的勾号
    • 是的,它成功了,但是我没有得到服务器的任何响应。我使用的代码可以在上面找到。当我在浏览器中使用 url 时它会起作用,我在浏览器中得到 xml 响应但是在 Ajax 中使用它时我没有得到任何响应请帮助我
    • @Nikil 这是因为我更改了代码,您需要检查 Firebug 控制台以查看响应。如果存在响应,则删除此部分 console.dir(xmlhhtp) 并替换为您的逻辑
    • 嗨 Deeptechtons,警报框显示没有响应,在萤火虫中,我收到“200”作为响应,
    • @Nikhil Since you get no response that means the server did not send you anything for the request you made. 我已经暗示过,您的服务器没有发送响应,因此您没有收到任何响应。
    【解决方案2】:

    我现在也正在处理 XMLHttpRequests 到 solr,但我遇到了一个看似相同的问题。我对此也很陌生。然而,对我来说,问题是同源政策。出现此问题时,Firefox 似乎很少给出反馈。 Chrome 至少会给您一条错误消息(大多数时候?)。

    在 Chrome 中,您可以通过使用'--disable-web-security' 命令行选项来解决此问题,但仅用于开发目的。

    我还没有为 Solr 找到解决此问题的好方法。通常,您可以通过仅使用具有相对路径的请求来避免限制,但 that doesn't seem possible when doing a request to another port

    Ways to circumvent the policy (I haven't had time to study this too much yet)

    【讨论】:

    • 啊,现在我看到您的问题已经通过 cmets 解决了。好吧,我可能会帮助其他人..
    【解决方案3】:
    $.ajax({
       url: "url path",
       context: document.body
       }).done(function(data) {
          alert(data);
    });
    

    这个也可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 2012-09-14
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      相关资源
      最近更新 更多