3

我在包含2個新行字符但沒有回車符的窗體的文本字段中輸入數據。 (我可以通過js中的strlen或使用str.charCodeAt()函數進行確認。)在javascript-php的情況下回車的意義是什麼?

現在我將此表單提交給一個php腳本,它以某種方式接收一個回車符以及新的行字符。

所以基本上,在js中的\n在php中變成\r\n

我有2個問題:

  1. 沒有人知道它爲什麼會發生?
  2. 爲什麼回車真的用於?

用例:服務器端和客戶端的表單驗證,用於限制字段的字符數。

+0

您必須指的是textarea,而不是文本字段 – stillstanding 2010-11-16 20:03:48

+0

是的。它是一個文本區域。 – sbr 2010-11-16 20:16:50

回答

4

JavaScript將換行符視爲\n,但是當您通過HTTP提交表單時,JavaScript與它無關(除檢查文本外)。 Windows將換行符視爲\r\n,因此當您使用Windows並在文本框中按回車鍵時,它實際上會在框中輸入\r\n。當您將這些數據發佈到服務器時,JavaScript不會執行此操作(除非您使用Ajax),否則您的瀏覽器會這樣做。您的瀏覽器將使用與您的操作系統相同的換行符設置,這就是爲什麼您在PHP文件中看到它們而不是在JavaScript中看到它們的原因。不同的操作系統對待換行符的方式不同有關更多背景信息,請參見here

編輯
回車實際上來自舊的打印機命令。回車意味着「將打印機墨盒送回到行的開頭」,換行符(或換行符)表示「到頁面上的下一行」。

+0

我正在使用mac作爲web服務器。我已經從Mac和Windows機器上嘗試過瀏覽器。與IE,Chrome,FF。 – sbr 2010-11-16 20:26:58

+0

@Ron - 如果你想知道如何解決它,你可以嘗試搜索並用C#或JavaScript代替提交的字符串。 – 2010-11-16 21:07:56

0

瀏覽器正在用\r\n取代\n。現在只需要將光標返回到輸出控制檯/終端的第一列,以及不能單獨處理LF的遺留系統,就需要CR。

相關問題