0

文字列のエンコードに問題があります。おそらく iis の問題か、私が見落としているものです。基本的にランダムに、ユーザーが変更をコミットすると、私のデコードを完全に無視しているかのように、テキストが %20 と共に保存されます。ローカルホスト、ライブ、または任意のブラウザーで発生することはありません。一貫性がなく、何が問題なのかをテストする方法さえ知りません。

基本的な部分を貼り付けるだけです:

ユーザー入力を受け入れるテキスト コントロール

<asp:TextBox TextMode="MultiLine" runat="server" txtActionUpdate"></asp:TextBox>

それから

Javascript を「エスケープ」して ajax メソッドに渡し、codebehind に送信する

var tAction = escape(document.getElementById("txtActionUpdate").value);

それから

webmethod では、次のようにデコードします。

Test = Microsoft.JScript.GlobalObject.unescape(tAction);

(以前は: Test = HttpUtility.UrlDecode(tAction); )

それでもなお、上記の両方のデコードオプションは完全に機能します (私にとっては?)。しかし、ランダムに、ユーザーがそれに取り組んでいるとき、デコードステップを文字通り「スキップ」し、エンコードされた形式でDBに書き込むだけです(つまり、this%20is%20a%20Test%20string)。コード。

複数の顧客 (個別の URL) がありますが、コード ベースは 1 つです。公開中、私は最初に削除してから公開し、アプリプールをクリアし、ユーザーにブラウザキャッシュをクリアさせます (後者は実際には嫌いです) が、これは決して一貫していないようです。これは、コードの問題ではなく、「キャッシュ」または「サーバー設定」の問題であると感じています...見た目が悪くなります! ;) 笑。予感した人いますか?

4

2 に答える 2

1

私はescapeこれ(または他のもの)には使用しません。を使用encodeURIComponentしてからデコードしHttpUtility.UrlDecodeます(MSDNは現在ダウンしているようです)。

于 2012-04-19T13:09:02.493 に答える
1

私の推測では、クライアントのどこかでデータが 2 回エンコードされているため、表示されている効果が得られます。

于 2012-04-19T13:13:22.500 に答える