我的服務器返回值爲support\testing
。當我在客戶端得到這個值時,它可以被轉義爲support testing
。 \t
被轉義爲標籤空間。避免轉義javascript中的特殊字符
如何避免轉義JavaScript中的特殊字符?
我的服務器返回值爲support\testing
。當我在客戶端得到這個值時,它可以被轉義爲support testing
。 \t
被轉義爲標籤空間。避免轉義javascript中的特殊字符
如何避免轉義JavaScript中的特殊字符?
您的服務器需要輸出正確轉義的字符串。
在這種情況下,您需要輸出中的反斜槓字符;反斜槓是一個特殊字符,所以應該逃脫。
反斜槓的轉義序列是\\
(即兩個反斜槓),但不應該考慮特定的轉義碼 - 如果要輸出JS數據,則應該使用正確的轉義輸出它整個字符串,這通常意味着你應該使用JSON編碼。
現在大多數服務器語言都提供JSON編碼作爲內置功能。您尚未指定服務器正在使用哪種語言,但例如,如果使用PHP編寫,則會輸出字符串爲json_encode($string)
,而不是直接輸出$string
。其他語言提供了類似的功能。這不僅可以保護您不僅可以防止反斜槓字符,還可以防止其他錯誤(如字符串中的引號或換行符),如果將它們作爲未轉義的字符串放入Javascript代碼中,也會導致錯誤。
鑑於它是一個網頁,上下文堆棧中可能需要更多的上下文逃避。如果它是腳本元素內部的字符串輸出,那麼你需要注意''因爲簡單地轉義爲javascript字符串通常不會做任何事情:9 – Esailija
如果您可以更改服務器端代碼,則應該在其中添加轉義字符:"support\\testing"
。
這將導致期望的結果。
爲什麼downvotes?兩個投票的答案都是合法的答案。 – marteljn
這真的是一個評論,而不是一個答案。 – kiamlaluno
@kiamlaluno它可能看起來像一個評論,但也是一個合法的答案,將返回所需的操作。 – marteljn
你可以做一個簡單的替換:
str.replace("\t","\\t");
而且你需要更換其他字符做到這一點。
或更好:'str。替換(/ \ t/g,'\\ t');' – tborychowski
這也會改變故意的標籤,它只是爲另一個問題換一個問題 – Esailija
此
function valid(f) {
debugger;
var s = "[email protected]#$%^&*()+=-[]\\\';,./{}|\":<>?~";
str = f.value;
for (var i = 0; i < str.length; i++) {
if (s.indexOf(str.charAt(i)) != -1) {
//alert("The box has special characters. \nThese are not allowed.\n");
f.value = f.value.replace(str.charAt(i), '');// : null;
return false;
}
}
}
返回' 「支持\\測試」'最佳解決方案?請參閱:http://msdn.microsoft.com/en-us/library/ie/2yfce773(v=vs.94).aspx –
你應該逃避服務器端,然後發送到javascrippt – stackErr
你可以避免使用反斜槓而不是斜槓。 – tborychowski