1

サーバーにテキストを送信するために、jqueryajax呼び出しを使用しています。

サーバーに送信されるテキスト(ユーザー入力)には、疑問符が含まれている場合があります。疑問符「?」が1つしかない場合 問題ありませんが、疑問符が2つある場合は「??」並べると、ajax呼び出しは適切に機能しなくなります。

テキストの例:

これはテキストの例ですか?はい、そうです...

生成されます:

これはテキストの例ですかjQuery17205792287601360849_1347644361296はい、そうです...

この問題の根本は、ajax呼び出しのキャッシュにあると思います。

キャッシュデフォルト:true、dataType'script'および'jsonp'の場合はfalse

falseに設定すると、要求されたページがブラウザによってキャッシュされないように強制されます。キャッシュをfalseに設定すると、クエリ文字列パラメータ「_=[TIMESTAMP]」もURLに追加されます。

とにかく2つ?? jsonを使用したjqueryajax呼び出しによって送信されたテキスト文字列を並べて表示すると、クエリ文字列パラメータが2つではなく元のテキストに表示されます。

さて、これに対する最良の解決策は何ですか?

誰かが私が2つではないことを保証する正規表現でstr.replace関数を書くのを手伝ってもらえますか?テキスト文字列に並べて...?

どうも!

// text will be stored in the database via ajax call
$.ajax ({
    type: "POST",
    url: "ajax/ajax_special_functions.php",
    data: data_string,
    dataType: "json",
    success: function(recive_obj) {

        // Some more code...
    }
});

テキストはdata_stringに含まれています...2つある場合?? 本文では、ajax呼び出しは引き続き実行され、データはサーバーに送信されますが、コールバック関数は実行されません...

更新: この問題は、正規表現str replaceを使用して一時的に解決しました-誰かがこの問題を解決するためのよりクリーンな方法を見つけた場合は、私に知らせてください。

4

2 に答える 2

1
if( /^(?=.*\?\?).+/.test(textstring) ) {
    // process the string or throw exception ...
}
于 2012-09-14T21:50:53.977 に答える
1

私はKevinBの提案に賛成しますが、本当に必要な場合は、正規表現を次に示します。

str = str.replace(/\?+/g, '?');
于 2012-09-14T21:51:16.940 に答える