我有一个小的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();
My Angular $ routeProvider将球传递给FormCtrl。 FormCtrl抓取查询参数并使用$ location.path将参数发送到ResultsCtrl:
$location.path('/results').search( { q: q} );
ResultsCtrl使用query参数调用各种服务并将结果呈现给用户。这一切都很精彩。那我为什么要在这里写一个问题呢?
嗯,搜索生成的网址如下:
.../unified-search/app/?q=physiology#/results?q=physiology
这有两个问题:
i)观察不美观
ii)它适用于大多数浏览器,但IE / Edge会在#&#39;#&#39;之后删除所有内容。这样做,找不到我的AngularJS应用程序 - 帮助!
我已经在.htaccess中尝试了许多正则表达式来重写URL,但是IE总是将查询字符串放在&#39;#&#39;之后。 - 它需要在&#39;#&#39;之后。为我的AngularJS应用程序工作。我怎么能实现这个目标呢?
答案 0 :(得分:0)
我怀疑问题在于您使用$location.path('/results').search({q: q})
设置路径和搜索参数。这将在哈希后追加/results
,然后将查询添加到URL。您不应该这样做,因为您的jQuery表单提交已经在处理导航。
答案 1 :(得分:0)
FWIW我通过在引用表单中使用POST而不是GET来解决这个问题。这将URL格式修复为:
.../unified-search/app/#/results?q=physiology
这就是我想要的,这也解决了IE中的问题。