使用javascript escape()时,缺少使用UTF-8的Request参数

时间:2011-06-02 13:49:21

标签: java jquery jsp utf-8 request

我使用jquery ajax api将一个文本作为参数提交(POST / GET)到处理页面。

<input type="text" id="txtboxdata" name="txtboxdata" >

var dataString = "tmpVar="+ escape( $("#txtboxdata").val() );
$.ajax({ type: "POST", 
                  url: "processing.jsp",
                  data: dataString ,
                  dataType: "json",
                  success: function(){}
        });

//dataString holds the parameter and value to be passed. Value is retrieved from a text box.

如果是文本框

  • 包含UTF-8字符
  • 在文本框值
  • 上应用javascript“escape”

然后参数tmpVar从处理页面中的请求对象(processing.jsp)中消失。

我使用了调试器,并检查了请求对象。名为“tmpVar”的参数从不显示。

满足以下条件时,此功能正常

时,tmpVar显示在processing.jsp的请求对象中
  • 没有UTF-8字符。
  • 在进行ajax调用之前,我没有应用“escape”。

我的问题 我想了解为什么在包含UTF-8的文本上应用escape不会出现在请求对象中?

PS:我使用“form serialize()”来解决问题,只是试图理解问题发生的原因。

Firebug:看起来不错,这总能正确显示出来。在实际POST / GET之前没有丢失数据。

2 个答案:

答案 0 :(得分:1)

您应该致电encodeURIComponent

答案 1 :(得分:1)

使用@SLaks提供的答案做了一些更多的研究,并找到了满意的答案。

解释为什么不应该使用“逃逸”并将其与可以使用的其他方法进行比较。

  • encodeURIComponent方法()
  • 是encodeURI()

http://xkr.us/articles/javascript/encode-compare/