编码URL参数

时间:2014-12-04 14:05:22

标签: javascript jquery jsp spring-mvc

我遇到了java脚本端的问题

1)

var text='{"type": "comTocomp","data":[{ "1" : "Key Parameters" , "2" : "Steel - Sponge/ Pig Iron"},   
          { "1" : "No of Companies" , "2" : "6,6 %  "  }]}';

这是我的var文本,我想将其发送到服务器端以生成excel表 并且浏览器应该弹出提示以保存我正在做的文件

2)

       var url="/XXX/YYYY/genrateSheet";       // URL OF CONTROLLER
       var encode=url+ "?data="+text;          // URL + PARAMETER+ TEXT CONTENT 
        var resUri=encodeURIComponent(encode); // TRIED TO ENCODE BUT DOESN'T WORK
        **window.location.replace(resUri);**       // CALLING TO CONTROLLER TO PROMPT POPUP

问题与 var text 一样,如果它包含某些特殊字符,例如%,。,则浏览器会显示

 The character encoding of the plain text document was not declared

但是这个特殊角色对我来说都不行。

我有很多Google但希望使用 window.location.replace(resUri)

编码网址

任何帮助都会对我有所帮助。

先谢谢

1 个答案:

答案 0 :(得分:2)

您需要编码查询字符串的值而不是查询字符串本身:

var url="/XXX/YYYY/genrateSheet";       // URL OF CONTROLLER
var resUri = url + "?data=" + encodeURIComponent(text); // querystring
window.location.replace(resUri);

说,text很长,所以你应该考虑将post添加到新页面,而不是将其传递给URL。使用jquery执行此操作的一种方法是创建并提交包含所需数据的隐藏表单:

$('button').on('click', function() {

    var text='{"type": "comTocomp","data":[{ "1" : "Key Parameters" , "2" : "Steel - Sponge/ Pig Iron"}, { "1" : "No of Companies" , "2" : "6,6 %  "  }]}';

    // create a hidden form    
    var theForm = $('<form action="/XXX/YYYY/genrateSheet" method="post"/>').hide();

    // create a textarea named data and set your json inside it
    var theTextarea = $('<textarea name="data"/>').val(text); // data in your case

    // add the textarea to the form
    theForm.append(theTextarea);

    // submit the form
    theForm.submit();
});

Working jsfiddle