2013-01-11 64 views
2

我有一個名爲New Project的窗口,帶有2個字段集:設置項目屬性(其中包含用戶可輸入項目名稱,項目代碼等詳細信息的文本字段)和設置權限(用戶可以選中/取消選中複選框以指示給定項目成員的權限級別)。項目名稱和項目代碼是接受空格和特殊字符的文本字段。當用戶在填寫所有項目屬性並選擇適當的項目權限後點擊Create Project按鈕時,會生成一個字符串,然後用於Ajax請求並創建該項目。extjs textfield and special characters(&+#)

但是,如果用戶輸入包含&(與號)字符的項目名稱,項目將被保存,但不會保存「&」字符及其後的所有字符。例如,如果我輸入Project Name作爲「Testing1 & 56」,在按下Create Project按鈕後,項目被創建並且Project Name變成「Testing1」(& 56不被保存/顯示)。當項目名稱字段中輸入加號(+)時,會發生類似的情況。按下「創建項目」按鈕之後,項目被創建,但加號消失,而是有一個空格。例如,如果我在項目名稱中輸入「測試+開發」,則在單擊「創建項目」按鈕之後,將創建該項目,並將項目名稱變爲「測試開發」。我已經通知了參數和url,看看生成了什麼樣的字符串。

我發現在該字符串中,顯示字符&和+。但是,一旦執行了Ajax請求並創建了項目,則&符號及其後的所有字符和加號不會保存在項目名稱中。

有關如何解決此問題的任何提示將不勝感激。

P.S.此外,在項目名稱字段中不接受英鎊(#)符號 - 當我單擊「創建項目」按鈕時,出現錯誤消息「無法創建項目」。但是,我希望用戶可以在項目名稱字段中輸入#號,並在用戶單擊「創建項目」按鈕時創建這樣的項目。

+0

請在您的文本中使用段落,這個文本牆幾乎是無法讀取和嚇倒的人。使段落點擊輸入兩次或在行尾添加2個空格。 – A1rPun

回答

1

要麼使用Post請求,要麼使用encodeURI()進行網址編碼,以防Get請求。

+0

我無法使用Post或Ext.urlEncode(現在已棄用)。根據我的主管,我應該能夠通過簡單地轉義&,+和#項目名稱和項目代碼字符串來解決這個問題。我一直在尋找Ext.String.escape(),String.search()和String.replace(),但無法提出解決方案。我無法修改Ajax(它需要保持原樣)。同樣,關於如何進行的任何提示都會有所幫助。 – anitacynax

+0

P.S.我也試過使用encodeURIComponent(url),因爲我讀了這個轉義&,+和#但它給了我一個錯誤(「你正在嘗試解碼和無效的JSON字符串」)。 – anitacynax

0

encodeURIComponent工作!我出錯的地方是我試圖編碼整個params變量(通過嘗試encodeURIComponent(params)),而我應該分別編碼每個變量(項目名稱,項目代碼等)。這是它是如何完成的:

var result = Ext.String.format("?project.ProjectName={0}&project.ProjectCode={1}&project.BaseFormatID={2}&region={3}&project.Company={4}&project.Location={5}&project.StartDate={6}&project.DeadlineDate={7}", encodeURIComponent(projectname), encodeURIComponent(projectcode), projectformat, region, encodeURIComponent(company), encodeURIComponent(location), startdate, deadlinedate);