美文网首页
Ajax GET请求:url参数中包含 "#" 特殊字符的处理

Ajax GET请求:url参数中包含 "#" 特殊字符的处理

作者: Shun2018 | 来源:发表于2019-11-20 10:57 被阅读0次

    [一、 问题现象 ]

    Bootstrap table 搜索时,使用ajax发送get查询请求,url 参数中只要包含”#”,请求参数只保留“#”之前的内容,“#”之后的字符全被裁掉。

    例如:
    期望请求: url: '/some/request/?test_parameter=test#parameter'
    实际请求:url: '/some/request/?test_parameter=test'
    “#parameter”将自动被丢弃,达不到预期查询效果。

    [二、原因分析 ]

    “#”在URI中用来指向一个锚点(如:某一元素的id)。
    期望请求实际定位到/some/request/?test_parameter=test这个页面的中id="parameter"的元素的位置。

    有些URL直接以#结尾,后面不带任何字符,比如:
    url: '/some/request/?test_parameter=test#'
    表示定位到/some/request/?test_parameter=test页面的最顶端。

    [ 三、解决方式 ]

    1、在拼接参数的时候,使用 encodeURIComponent() 进行手动转义。
    如:url: '/some/request/?test_parameter=encodeURIComponent( "test#parameter" )'

    2、或将请求参数放进ajax请求的data属性中, jquery 会自动调用 encodeURIComponent() 进行 encode,比如:

    $.ajax({
        type: "get",
        url: "/some/request/",
        data: {
          "test_parameter" : "test#parameter"
        },
        ......
      });
    

    相关文章

      网友评论

          本文标题:Ajax GET请求:url参数中包含 "#" 特殊字符的处理

          本文链接:https://www.haomeiwen.com/subject/pjanictx.html