2010-10-09 127 views
1

有沒有更好的方法來替換字符串作爲& textarea打破腳本,因爲它認爲它的另一個&參數?替換輸入值

function doRequest(){ 
var str = $('textarea#tr').val(); 
$.ajax({ 
    type: "POST", 
    url: "index.php?sd=t", 
    data: "txt="+str.replace(/&/g, "and"), 
    success: function(){ 
     $("div").css('color','red'); 
     $("div").text('Saved'); 
     $("div").fadeTo(800,1); 
     $("div").animate({backgroundColor:'#000000'}, 200); 
     $("div").animate({backgroundColor:'#FFFF90'}, 400); 
     stre = false; 
    } 
}); 
} 

回答

4

您可以將您的數據作爲對象,讓jQuery的序列化,就像這樣:

data: {txt: str}, 

注意這不會把「和」字,它會逃跑它,離開%26

What actually happens under the covers呼籲encodeURIComponent(),像這樣:

data: "txt="+encodeURIComponent(str), 

我與第一種方法去,我只是展示什麼是下面發生的事情以便更好地理解如何編碼的作品。

+0

有txt的原因是,以便從PHP內使用$ _GET ['txt'],如果我刪除這個讓jquery序列化將獲取請求被調用什麼? – Slug 2010-10-09 16:11:45

+0

@Slug - 無論屬性名稱在對象中,它仍將被稱爲「txt」,這就是參數在GET請求上調用的內容,例如,這仍然會序列化爲「txt = something」,你可以用alert($。param({txt:str}))''來測試/看到它,這就是被覆蓋的東西:) – 2010-10-09 16:14:34

+0

哦是的,非常感謝! – Slug 2010-10-09 16:28:22

1
data: { txt: $('textarea#tr').val() }