0

ページに複数行の入力用のテキストエリアを含むフォームがあり、従来の ASP スクリプトにポストされ、次のように各行がループされます。

catlist = Split(request("catlist"),vbcrlf)
for i = 0 TO UBound(catList)
    'do some stuff to each line
next

これは、HTML POST または GET 要求を使用する場合にうまく機能します。しかし今、フォームの代わりに jQuery $.get を使用するようにテキストエリアを含むページをやり直そうとしていますが、テキストエリアからの改行を処理できないようです。テキストエリアに次が含まれているとします。

test1
test2

送信ボタンを押すと、次の関数が実行されます。

function add() {
    var thetext = $("#thefield").val();
    $.get("task.asp", {action:"add",thetext:thetext});
}

それはただクラッシュし、予期しない不正なトークンを私に与えます(改行のために-単一行の入力で正常に動作します)。

したがって、代わりに関数を次のようにします。

function add() {
    var thetext = encodeURIComponent($("#thefield").val());
    $.get("task.asp", {action:"add",thetext:thetext});
}

これはスクリプト エラーなしで処理されますが、サーバー側で request("thetext") を実行すると、次を含む 1 行しか受信しません。

test1%0Atest2%0A

通常の Javascript (非 ajax) を使用し、encodeURI を使用してクエリ文字列を送信する場合、サーバー側で追加の復号化を行う必要はありません。クラシック ASP は常にそれを自動的に処理します。しかし、何らかの理由でこの $.get メソッドを使用すると、エンコードされたままになります。

サーバー側のスクリプトを手動デコードに変更せずにこれを機能させる方法はありますか?

4

1 に答える 1

0

%0A改行です

Windows で改行を含むテキストを表示すると、1 行のように見えます。

ASPをこれに変更してみてください

catlist = Split(request("catlist"),vblf)
于 2013-05-14T04:12:48.953 に答える