2

我有一个名为 New Project 的窗口,其中包含 2 个字段集:设置项目属性(其中包含文本字段,用户可以在其中输入项目名称、项目代码等详细信息)和设置权限(用户可以在其中选中/取消选中复选框以指示权限给定项目成员的级别)。项目名称和项目代码是接受空格和特殊字符的文本字段。当用户在填写所有项目属性并选择适当的项目权限后单击“创建项目”按钮时,将生成一个字符串,然后将其用于 Ajax 请求并创建项目。

但是,如果用户输入的项目名称中包含 &(与号)字符,则项目会被保存,但与号字符及其后面的所有字符都不会被保存。例如,如果我输入项目名称为“Testing1&56”,在按下创建项目按钮后,项目被创建并且项目名称变为“Testing1”(&56 不保存/显示)。当在项目名称字段中输入加号 (+) 时,也会发生类似的情况。按下 Create Project 按钮后,项目已创建,但加号消失,取而代之的是一个空格。比如我输入“Testing+Developing”作为Project Name,点击Create Project按钮后,项目创建完成,Project Name变成“Testing Developing”。

我发现在该字符串中,显示了字符 & 和 +。但是,一旦执行了 Ajax 请求并创建了项目,“&”号及其后面的所有字符和加号就不会保存在“项目名称”中。

任何有关如何解决此问题的提示将不胜感激。

PS 此外,项目名称字段中不接受井号 (#) 符号 - 当我单击创建项目按钮时,我收到错误消息“创建项目失败”。但是,我希望用户可以在“项目名称”字段中输入 # 符号,并在用户单击“创建项目”按钮时创建这样的项目。

4

2 回答 2

1

在请求的情况下使用Post请求或encodeURI()用于 url 编码Get

于 2013-01-11T17:40:07.670 回答
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);
于 2013-01-16T10:09:51.073 回答