使用Ajax的发送Get请求,Url被截断

  • 请求参数,roleName中包含特殊字符"#"
    使用Ajax的发送Get请求,Url被截断

  • 发送请求的js代码

static request(param){

        let opt = param || {};
        opt.url = param.url || '';
        opt.async = param.async || true;
        opt.data = param.data || null;
        opt.success = param.success || function () {};

        let requestUrl = opt.url;
        requestUrl = this.appendGetParams(requestUrl, opt.data);
        requestUrl = encodeURI(requestUrl);

        $.ajax({
            url: requestUrl,
            contentType: 'application/x-www-form-urlencoded;charset=utf-8',
            type:"get",
            // xhrFields:{
            //     withCredentials:true
            // },
            dataType: opt.dataType || 'json'
        }).done(function (data) {
           ...
           ...
           ...
        });
    }
  • 原因

    encodeURI方法***不会***对下列字符编码 ASCII字母 数字 ~!@#$&*()=:/,;?+'

  • 解决

    将encodeURI替换为encodeURIComponent

    encodeURIComponent方法***不会***对下列字符编码 ASCII字母 数字 ~!*()’,但是会处理"#"

    对url进行encode的时候,根据需要选择不同的编码方式

上一篇:API-6_3 WebAPI跨域与AJAX请求


下一篇:web前端笔记(11)-jquery ajax