转义通过POST发送的jQuery数据

时间:2010-02-09 19:21:06

标签: javascript jquery escaping

我正在使用jQuery.ajax从页面中提取表单数据,并将其发送到我的数据库(通过另一个PHP页面)。

表格信息由以下人员收集:

var X=$('#div1').val();
var Y=$('#div2').val();

这用于构建POST字符串,即

var data='varx='+X+'&vary='+Y;

如果使用&符号,显然这是有问题的。什么是逃避变量的最佳方法,特别是使用户可以安全地使用&符号(&)?

谢谢!

3 个答案:

答案 0 :(得分:24)

encodeURIComponent会做你想要的。

var X = encodeURIComponent($('#div1').val());
var Y = encodeURIComponent($('#div2').val());

这将编码所有可能不安全的字符。

答案 1 :(得分:24)

最好的方法是使用数据对象。

jQuery.post("yourScript.php", {
   varx: X,
   vary: Y
});

jQuery.ajax({
      url: "yourScript.php",         
      type: "POST",
      data: ({varx: X, vary: Y}),
      dataType: "text",
      success: function(msg){
         alert(msg);
      }
   }
);

您还可以使用jQuery的serialize()将表单数据作为序列化查询字符串获取:

var data = jQuery(formSelector).serialize();
  

.serialize()方法创建一个文本   标准URL编码的字符串   符号。它运行在jQuery上   表示一组表格的对象   元素。表单元素可以是   几种类型。

在我看来更漂亮: - )

答案 2 :(得分:2)

您可以使用JavaScript的转义功能

var data='varx='+escape(X)+'&vary='+escape(Y);