2013-07-02 71 views
0

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

我谷歌搜索它,并发现堆栈溢出一些类似的问题:一个问题说,使用$.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; 
}); 

我没有得到'成功'的警报。回调函数从不执行。我怎样才能解决这个问题?

+3

如果服务器支持跨域请求(即启用了CORS),则只能进行跨域请求。或者你必须使用JSONP。但是,如果没有CORS,您无法从不同的域加载JSON。 –

+0

@MaryMelody你对这个问题的拒绝拉里萨的[建议编辑](http://stackoverflow.com/review/suggested-edits/5760271),我认为是错误的。你拒绝和编辑,但你所做的只是从她的建议中删除一些有效的更正和改进,并引入额外的语法错误;最好接受这个建议。请参阅http://meta.stackoverflow.com/questions/271298/is-it-worth-re-editing-when-a-reviewers-reject-and-edit-fails-to-fix-problems上的元讨论 –

回答

1

我认为在你给出的URL中有一个小错误。

$.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){ 

我刚选择后删除了'/'。我只使用下面的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> 

希望它可能有用。

1

检查Documentation

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

json.wrf =功能 - 周围增加了JSON响应的包装功能, 有用的AJAX与指定的JavaScript 回调函数动态脚本标记。

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

相关问题