2010-02-09 120 views
18

我使用jQuery.ajax從頁面中提取表單數據,並將其發送到我的數據庫(通過另一個PHP頁面)。通過POST轉義jQuery數據發送

的形式的信息被收集:

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

這是用來建立POST字符串,即

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

顯然如果使用符號字符,這是有問題的。什麼是避開變量的最佳方法,特別是爲了讓用戶可以安全地使用&符號(&)?

謝謝!

回答

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的序列化()來獲取表單數據作爲序列化的查詢字符串:

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

的.serialize()方法創建文本 標準URL編碼的字符串 表示法。它運行在代表一組表格 元素的jQuery 對象上。表單元素可以是 幾種類型。

在我看來更漂亮的方式:-)

+0

感謝您的回覆! – Matt 2010-02-12 22:07:15

24

encodeURIComponent將做你正在尋找。

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

這將編碼所有可能不安全的字符。

+0

感謝您的回覆中逃生功能! – Matt 2010-02-12 22:07:47

2

您可以使用JavaScript

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

在JavaScript 1.5版中棄用了escape()函數。改爲使用encodeURI()或encodeURIComponent()。 – CoR 2015-04-28 11:47:26