0

我使用 jQuery$.ajax()向 SOLR 服务器发送请求并以 JSON 格式获取结果,但它不起作用。我的代码是正确的,因此我无法弄清楚出了什么问题。如果我将 URL 粘贴到浏览器的地址栏中,我会得到正确的 JSON 输出。

我用谷歌搜索并在 Stack Overflow 上发现了一些类似的问题:一个问题说要$.getJSON改用,但没有给出任何理由,但这对我也不起作用。

现在,我知道有一个 AJAX-SOLR 框架并且我将使用它,但我想知道为什么 SOLR 和 jQuery 存在问题。

以下是我使用 的尝试$.getJSON,以防万一这是我的错误。

$('#searchForm').on('submit', function(){
    // get the user entered search query
    var query = $('#queryBox').val();

    // send the AJAX request to solr and get the results
    $.getJSON('http://localhost:8983/solr/select/?q='+query+'&wt=json&indent=true', function(searchResult){
        alert('success');
    });

    alert(query);

    return false;
});

我没有收到“成功”警报。回调函数永远不会执行。我怎样才能解决这个问题?

4

2 回答 2

2

检查文档

确保将json.wrf=?参数添加到请求 URL,以便调用成功方法。

json.wrf=function - 在 JSON 响应周围添加一个包装函数,在 AJAX 中很有用,带有用于指定 JavaScript 回调函数的动态脚本标签。

您仍然可以直接使用 getJson 函数从 Solr 获取 json 响应。

于 2013-07-03T03:51:44.350 回答
1

我认为您提供的网址存在小错误。

$.getJSON('http://localhost:8983/solr/select/?q='+query+'&wt=json&indent=true', function(searchResult){


$.getJSON('http://localhost:8983/solr/select?q='+query+'&wt=json&indent=true', function(searchResult){

我只是在 select 之后删除了 '/' 。我使用下面的 AJAX 代码可以正常工作。

<html>
<head>
<script type="text/javascript">

function callAjax() {

    var xmlhttp;
    if (window.XMLHttpRequest) {
      xmlhttp=new XMLHttpRequest();
      } else {
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    alert(xmlhttp);
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
        }
      }
    var searchStr = document.getElementById("searchQuery");
    xmlhttp.open("GET","http://localhost:8080/solr/select?q="+(searchStr.value),true);
    xmlhttp.send();
}

</script>
<title>ajaxTest</title>
</head>
<body>
<form>
<input type="text" id="searchQuery">
<input type="button" value="SUBMIT" onclick="callAjax()">

<div id="myDiv"></div>
</form>
</body>
</html>

希望它可能有用。

于 2013-07-05T11:48:38.667 回答