2

2つのフィールドセットを持つ新しいプロジェクトと呼ばれるウィンドウがあります:プロジェクトプロパティの設定(ユーザーがプロジェクト名、プロジェクトコードなどの詳細を入力できるテキストフィールドを含む)とアクセス許可の設定(ユーザーがチェックボックスをオン/オフにしてアクセス許可を示すことができる)特定のプロジェクトメンバーのレベル)。プロジェクト名とプロジェクトコードは、スペースと特殊文字を受け入れるテキストフィールドです。すべてのプロジェクトプロパティを入力し、適切なプロジェクト権限を選択した後、ユーザーが[プロジェクトの作成]ボタンをクリックすると、文字列が生成され、Ajaxリクエストに使用され、プロジェクトが作成されます。

ただし、ユーザーが&(アンパサンド)文字を含むプロジェクト名を入力すると、プロジェクトは保存されますが、アンパサンド文字とそれに続くすべての文字は保存されません。たとえば、プロジェクト名を「Testing1&56」と入力した場合、「プロジェクトの作成」ボタンを押すと、プロジェクトが作成され、プロジェクト名は「Testing1」になります(&56は保存/表示されません)。[プロジェクト名]フィールドにプラス(+)記号を入力すると、同様のことが起こります。[プロジェクトの作成]ボタンを押すと、プロジェクトが作成されますが、プラス記号が消え、代わりにスペースが表示されます。たとえば、プロジェクト名として「Testing + Development」と入力すると、「Create Project」ボタンをクリックした後、プロジェクトが作成され、プロジェクト名は「TestingDeveloping」になります。

その文字列に&と+の文字が表示されていることを発見しました。ただし、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 に答える