将查询字符串放在 angularjs 应用程序中的哈希之后
Put query string after hash in angularjs app
我有一个小小的AngularJS搜索应用程序,它最初通过GET从(非AngularJS(HTML页面中的表单发送数据:
<form accept-charset="UTF-8" name="librarysearch" id="us-form" action="#" method="get" >
我使用一些jQuery将表单提交到AngularJS应用程序:
$("#us-form").attr("action", "/unified-search/app/#/results?q=" + q).submit();
我的 Angular $routeProvider将球传给 FormCtrl。FormCtrl 获取查询参数并使用 $location.path 将参数发送到 ResultsCtrl:
$location.path('/results').search( { q: q} );
结果 Ctrl 使用查询参数调用各种服务并将结果呈现给用户。这一切都非常有效。那么我为什么要在这里写一个问题呢?
好吧,从搜索生成的 URL 是这样的:
.../unified-search/app/?q=physiology#/results?q=physiology
这有两个问题:
i( 观察不美观
ii(它适用于大多数浏览器,但IE/Edge会删除"#"之后的所有内容。这样做时,找不到我的 AngularJS 应用程序 - 帮助!
我已经在 .htaccess 中尝试了许多正则表达式来重写 URL,但 IE 总是将查询字符串放在"#"之前 - 它需要在"#"之后才能让我的 AngularJS 应用程序工作。请问我怎样才能做到这一点?
我怀疑问题是您正在使用$location.path('/results').search({q: q})
设置路径和搜索参数。这是在哈希之后追加/results
,然后将查询添加到 URL。你不需要这样做,因为你的jQuery表单提交已经在处理导航。
FWIW 我通过使用 POST 而不是引用形式的 GET 来解决这个问题。这会将 URL 格式固定为:
.../unified-search/app/#/results?q=physiology
这就是我想要的,这也解决了IE中的问题。
相关文章:
- 根据选项卡内部的文本链接中的哈希ID动态选择jqueryUI选项卡
- Steam Web API:I'我不知道该如何处理这个看起来像哈希的url来生成图像
- AngularJS:获取链接中没有哈希的查询字符串值
- 如何在Google chrome安全首选项文件中创建扩展安全哈希代码
- 如何在浏览器重新加载时保存位置哈希状态
- jQuery scrollTop-哈希错误
- 动态添加哈希标记;t工作
- 在Javascript中实现对哈希值的暴力攻击
- 如何在JavaScript/Node中计算SHA256哈希和Base64字符串编码
- 使用Javascript/jQuery以编程方式将当前锚点/哈希/片段附加到任何表单操作url
- 可以在React Native中制作一个自哈希应用程序
- 重定向不带哈希的URL-Ember.JS
- 正在测试主干事件哈希
- JavaScript对象作为哈希?复杂性是否大于O(1)
- 如何在JavaScript中实现哈希表
- 如何根据传入的哈希标签发送PHP请求
- 在我的图库(jQuery)中使用箭头导航时,更改URL中的哈希
- 哈希被推到猫鼬模型上作为'[对象对象]”;
- 将查询字符串放在 angularjs 应用程序中的哈希之后
- 如何检查一个元素在id的哈希符号之后是否有一个字符串?