我使用 ajax-solr作为 Solr 搜索的前端。为了获得搜索结果,ajax-solr
使用 jQuery.getJSON()
从服务器GET
一个特定的 URL。相关代码为here :
AjaxSolr.Manager = AjaxSolr.AbstractManager.extend(
/** @lends AjaxSolr.Manager.prototype */
{
executeRequest: function (servlet) {
var self = this;
if (this.proxyUrl) {
jQuery.post(this.proxyUrl, { query: this.store.string() }, function (data) { self.handleResponse(data); }, 'json');
}
else {
jQuery.getJSON(this.solrUrl + servlet + '?' + this.store.string() + '&wt=json&json.wrf=?', {}, function (data) { self.handleResponse(data); });
}
}
});
问题是无论 GET
URL 是什么,浏览器地址栏中显示的 URL 都不会改变。
我想允许用户通过电子邮件或推特共享搜索 URL。所以我需要让 jQuery.getJSON()
加载的 URL 在浏览器地址栏中可见。有什么办法吗?
谢谢。
最佳答案
这是可能的,但你必须变得更复杂一点。基本上,您必须在主题标签后添加一些内容,如下所示:
www.mysite.com/searchWithAjax#customData
然后,在您的页面加载时,您可以读取# 之后的内容并使用该信息执行 ajax 搜索。要访问# 后面的内容,只需使用 location.hash: http://www.w3schools.com/jsref/prop_loc_hash.asp
不幸的是,location.hash 在匿名 jsFiddle 中有点难做。查看这个人的示例,我认为这几乎正是您所需要的,您可以通过查看源代码来获取代码:
http://jsfiddle.net/cowboy/CukUH/show/
还有一篇关于基本技术的非常古老的文章:
关于jQuery:如何让 jQuery.getJSON() 调用的 URL 在浏览器地址栏中可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5722252/