2011-06-02 64 views
0

我正在使用jQuery ajax api將文本作爲參數提交(POST/GET)到處理頁面。使用javascript escape()時使用UTF-8缺少請求參數

<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的 「逃離」 上的文本框的值

則該參數tmpVar去從處理頁面(processing.jsp)中的請求對象中消失。

我使用了調試器,並檢查了請求對象。名爲「tmpVar」的參數從不出現。

此正常工作時,滿足以下條件
tmpVar示出了在processing.jsp的請求對象時

  • 沒有UTF-8字符。
  • 在進行ajax調用之前,我不應用「逃脫」。

我的問題 我想明白爲什麼含UTF-8的請求對象不會出現文字應用逃生? PS:我用「form serialize()」來解決這個問題,試圖理解問題出現的原因。

Firebug:看起來很好,它總是顯示正確。實際POST/GET之前沒有丟失數據。

+0

什麼是HTTP請求看起來發送不被看到,導致'tmpVar'變量的請求時,什麼樣的?使用Firebug或Chrome捕獲這些文件併發布它們 – 2011-06-02 13:51:30

回答

1

使用@SLaks提供的答案做了更多的研究並找到了滿意的答案。

解釋不應該使用「逃逸」的原因,並將其與可以使用的其他方法進行比較。

  • encodeURIComponent方法()
  • 是encodeURI()

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

1

您應該改用encodeURIComponent

+0

感謝您提供替代方法。這使我做了一些研究,我找到了一個很好的解釋。 – 2011-06-02 14:04:10