Backbone - 在JavaScript中使用变音符编码的URL

时间:2016-10-06 08:19:49

标签: javascript html backbone.js

我有一个搜索表单,将用户重定向到search/thetermusersearched,其中thetermusersearched是他输入的确切值。所有这一切都与Backbone提供的导航功能有关。

当我在英语中使用字符串(masa de calcat)时,这一切都很好,但是当我在输入中添加变音符号(masădecălcat)时,我将路由函数触发两次。

我遇到的问题是Firefox和Safari(Mac和iOS中的后期)

我在使用encodeURI时尝试使用encodeURIComponentnavigate,但没有成功。

HTML

<div id="view-goes-here">
  <a href="#" data-string="masa de calcat">One alert</a>
  <a href="#" data-string="masă de călcat">Two alerts</a>
</div>

JS

var R = Backbone.Router.extend({
    routes: {
        'results/:query': 'results'
    },
    results: function(query) {
        alert('Route triggered: ' + decodeURIComponent(query));
    }
});
var myR = new R;
Backbone.history.start();

$(function(){
  $('a').on('click', function(e){
   e.preventDefault();
   var href = $(this).data('string');
   href = 'results/' + encodeURIComponent(href);
   console.log(href);
   myR.navigate(href, {trigger: true});
  })
})

请参阅此处的小提琴:http://jsfiddle.net/adyz/qcged76e/4/

对此有何想法?

1 个答案:

答案 0 :(得分:0)

我在你的小提琴中有两个链接的双重警报。 我尝试在编码之后使用escape似乎有效:

href =  'results/' + escape(encodeURIComponent(href));