我有一个名为New Project的窗口,包含2个字段集:设置项目属性(包含文本字段,用户可以在其中输入详细信息,如项目名称,项目代码等)和设置权限(用户可以选中/取消选中复选框)表示给定项目成员的权限级别。项目名称和项目代码是接受空格和特殊字符的文本字段。当用户在填写所有项目属性并选择适当的项目权限后单击“创建项目”按钮时,将生成一个字符串,然后将其用于Ajax请求并创建项目。
但是,如果用户输入的项目名称包含& (&符号)字符,项目已保存,但&符号字符及其后面的所有字符均未保存。例如,如果我将项目名称输入为“Testing1& 56”,则在按下“创建项目”按钮后,将创建项目并且项目名称变为“Testing1”(不保存/显示& 56)。在项目名称字段中键入加号(+)时会发生类似的情况。按下“创建项目”按钮后,将创建项目,但加号消失,而是有一个空格。例如,如果我输入“Testing + Developing”作为Project Name,则在单击Create Project按钮后,将创建项目并且Project Name变为“Testing Developing”。我已经警告了params和url,看看是什么类型的字符串生成。
我发现在那个字符串中,字符&和+显示。但是,一旦执行了Ajax请求并创建了项目,“&”符号及其后面的所有字符和加号就不会保存在“项目名称”中。
非常感谢有关如何解决此问题的任何提示。
P.S。另外,在项目名称字段中不接受井号(#) - 当我单击“创建项目”按钮时,我收到错误消息“无法创建项目”。但是,我希望用户可以在“项目名称”字段中输入#符号,并在用户单击“创建项目”按钮时创建此类项目。
答案 0 :(得分:1)
在Post
请求的情况下,使用encodeURI()
请求或使用Get
进行网址编码。
答案 1 :(得分:0)
encodeURIComponent有效!我出错的地方是我试图整个编码params变量(通过尝试encodeURIComponent(params)),而我应该分别编码每个变量(项目名称,项目代码等)。以下是它的完成方式:
var result = Ext.String.format("?project.ProjectName={0}&project.ProjectCode={1}&project.BaseFormatID={2}®ion={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);