转义通过POST发送的jQuery数据

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

表格信息收集方式:

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

这用于构建POST字符串,即

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

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

谢谢!

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

 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对象上运行。 表单元素可以是几种类型。

在我看来更漂亮:-)

encodeURIComponent会做你想要的。

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

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

您可以使用JavaScript的转义function

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