jquery的 serialize()方法,可以對表單項進行序列化,這本來是很方便的一個功能;但是實際使用中去發現了如下問題:例如:< textarea name="content">abc 123 </textarea >那么在執行 serialize()方法后,得到的卻是abc+123這樣的字符串;即jquery的序列化方法對空格進行了轉義,轉換成了 + 號。jquery中serialize方法的部分代碼如下所示://.................//.................return s.join("&").replace(/ /g, "+"); //替換空格為 + 號測試了一下,serialize()方法對真正的“+”號轉義的是 %2B,所以可以放心的對serialize()后的結果進行符號替換例:< textarea name="content">abc + 123 + 456</textarea >jquery代碼:var a= $('$frm1').serialize(); //序列化,默認會調用encodeURIComponent()進行編碼alert(a); // content=abc+++123+++456var b = a.replace(//+/g," ");// g表示對整個字符串中符合條件的都進行替換b =decodeURIComponent(b);//對serialize后的內容進行解碼alert(b); // content=abc + 123 + 456至此,問題解決了。
新聞熱點
疑難解答