2

これは私を夢中にさせています。MySQLからデータを取得し、要素をコンマで区切った文字列として保存するPHPスクリプトがあります。

JavaScriptはその文字列を受け取り、コンマを「\ n」に置き換えて、テキスト領域内に表示します。これで、テキスト領域からテキストに新しい行を追加できます。ボタンをクリックするときは、文字列をコンマで区切られた要素に変換し直してから、(AJAXを介して)PHPに再度設定して保存する必要があります。問題はJavaScriptにあり、テキスト領域に3行を超える場合、「\n」文字を検出できません。

// These are the lines of the text-area, after replacing ',' by '\n'
var textarealines=input_hidden_element.value.replace(',','\n').replace(',','\n');

// When trying to replace '\n' by ',' and send back, PROBLEM!
var AjaxRequest = WT.AjaxObject();
    AjaxRequest.open('POST', WT.AjaxLocation, true);
    AjaxRequest.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    AjaxRequest.send('values=' + textarealines.replace('\n', ',').replace('\n', ','));
        AjaxRequest.onreadystatechange = function() {
            // Bla bla bla
        }

だから、私は何が間違っているのですか?最大2行まで、新しい行は正しくコンマに置き換えられますが、2行を超えると、最初の2行だけが置き換えられ、次の行は「\n」を含む1行のテキストとして「n」文字で送信されます。ありがとう

4

1 に答える 1

3

グローバル検索フラグを追加してみてください:

textarealines.replace(/\n/g, ',')

/\n/gは単一引用符で囲まれていないことに注意してください。つまり、正規表現です。

同様に、改行からカンマにするには、次を試してください。

input_hidden_element.value.replace(/,/g, '\n')

この質問は、 「JavaScript で文字列内のすべてのポイントを置き換える方法」に似ています。

于 2012-06-22T11:57:09.327 に答える