数据表查询 url 字符串:需要正则表达式来修复 url 解析

Datatables query url string: need regex to fix url parsing

我是在我在这里找到的示例的基础上构建的: http://datatables.net/forums/discussion/13488/adding-parameters-to-a-url-to-pre-filter

谁能解释这个正则表达式的作用以及我如何修改它以接受空白 spaces?目前,当您输入 space 时,浏览器会将其编码为 %20。如何让浏览器将 space 解释为 space 并过滤正确的字符串?

示例:“http://example.com/list/?search=bobby%20flay”仍应在数据表搜索字段中插入字符串 "bobby flay"。它还将编码字符串插入为 "bobby%20flay" 并且显然没有找到任何结果。有任何想法吗?谢谢。

$.urlParam = function(name){
        var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
        if (!results)
        {
            return;
        }
        return results[1] || "";
    };
    
$(document).ready(function(){
    $('#myTable').DataTable( {
        "oSearch": {"sSearch": $.urlParam('search')}
      
      ...
      
      });

这样的事情应该有效:https://jsfiddle.net/pdo5k5ht/

 var urlString = "http://example.com/list/?search=bobby%20flay",
arr = urlString.split('='),
finalString = arr[arr.length-1].replace(/%20/g, " ");
alert(finalString );

要使用您当前拥有的功能,您似乎可以将这两个功能替换为以下内容:

 $(document).ready(function(){ 
        var arr = window.location.href.split('='),
        search = arr[arr.length-1].replace(/%20/g, " "); 
        $('#myTable').DataTable( {
            "oSearch": {"sSearch": search}
          });
     });

1) 等待文档加载

2a) 使用 window.location.href

得到 url

2b) 使用 split 在 '='

的每个实例处创建一个数组

3a) 获取数组长度,获取最后一个对象:arr.length-1

3b)使用正则表达式将 %20 的每个实例替换为“”

4) 将新字符串传递给现有的 table 函数