jQuery:如何让 jQuery.getJSON() 调用的 URL 在浏览器地址栏中可见?

标签 jquery ajax http browser http-get

我使用 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/

还有一篇关于基本技术的非常古老的文章:

http://aspektas.com/blog/using-the-location-hash-with-ajax/

关于jQuery:如何让 jQuery.getJSON() 调用的 URL 在浏览器地址栏中可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5722252/

相关文章:

ajax - 调用 angularJS $http.jsonp 时未捕获的语法错误 : Unexpected token <,

c# - 如何从 HTTP 流中组装 pdf?

c++ - 在 C 中使用原始套接字确定 HTTP 版本

javascript - 自动打开显示模式

javascript - jQuery 的圆形导航效果

jquery - Rails 3.0 form_tag w/remote 不正确接受 : header

jquery - 如何在 ruby​​ 中告诉 ajax 请求

html - 为什么可以使用GET方法来提交表单数据?

jquery - 如何改变输出方向?

javascript - 从选择中删除属性倍数