2

IE8 および Firefox で jQuery 1.9.1 を使用します。プライマリ環境は IE8 です。

私が取り組んでいる Web ページには、ユーザーが送信ボタンをクリックしてテキストを入力できるテキストエリアがあり、XML にフォーマットされ、AJAX POST を介してテーブルに書き込まれます。XML 入力を受け入れるストアド プロシージャを呼び出します。

いくつかの異なる方法を試しましたが、ストアド プロシージャがテーブルに書き込もうとしたときに、次のテキストがエラーをスローしないようにすることはできません。テキストは次のとおりです。

jQuery UI は、jQuery JavaScript ライブラリの上に構築された、厳選されたユーザー インターフェイスの相互作用、効果、ウィジェット、およびテーマのセットです。高度にインタラクティブな Web アプリケーションを構築している場合でも、フォーム コントロールに日付ピッカーを追加する必要がある場合でも、jQuery UI は最適な選択肢です。

ストアド プロシージャには、"incorrect syntax near 're'".

テキストエリアの内容をエンコードする 3 つの方法を試しましたが、すべて同じことを行い、同じエラーをスローします。

私が試してみました:

encodeURIComponent( texareaMsg );
encodeURI (textareaMsg);

そしてまた

htmlEncode(textareaMsg);

(ここで、htmlEncode は次の関数です)

function htmlEncode(value) {
    return $("<div />").text(value).html();
}

それらのいずれかがアポストロフィをエスケープ/エンコードしているようには見えません。encodeURIComponent は以下を返します。

jQuery%20UI%20is%20a%20curated%20set%20of%20user%20interface%20interactions%2C%20effects%2C%20widgets%2C%20and%20themes%20built%20on%20top%20of%20the%20jQuery%20JavaScript%20Library. %20Whether%20you're%20building%20highly%20interactive%20web%20applications%20or%20you%20just%20need%20to%20add%20a%20date%20picker%20to%20a%20form%20control%2C%20jQuery%20UI%20is %20the%20perfect%20choice.

encodeURI は次を返します。

jQuery%20UI%20is%20a%20curated%20set%20of%20user%20interface%20interactions,%20effects,%20widgets,%20and%20themes%20built%20on%20top%20of%20the%20jQuery%20JavaScript%20Library.%20Whether% 20you're%20building%20highly%20interactive%20web%20applications%20or%20you%20just%20need%20to%20add%20a%20date%20picker%20to%20a%20form%20control,%20jQuery%20UI%20is%20the%20perfect %20 選択。

htmlEncode 関数は次を返します。

jQuery UI は、jQuery JavaScript ライブラリの上に構築された、厳選されたユーザー インターフェイスの相互作用、効果、ウィジェット、およびテーマのセットです。高度にインタラクティブな Web アプリケーションを構築している場合でも、フォーム コントロールに日付ピッカーを追加する必要がある場合でも、jQuery UI は最適な選択肢です。

この問題の原因となっているこの場合のアポストロフィ (およびその他の特殊文字) のようなものをどのようにエンコード/エスケープすることになっていますか? 繰り返しますが、 IE8の主要な環境向けに開発する必要があります。私がこれまでに見つけたものはうまくいきませんでした。

編集

@Krishnaのコメントは、ある程度機能させることができたという方向に私を向けるのに役立ちました. 私はまだテストデータでそれを爆破することができませんでした. それが最善の解決策であるかどうかもわかりません。

var myString = msgArr[0].MsgText;
myString = myString.replace(/ & /g, "&amp;");
myString = myString.replace(/"/g, "&quot;");
myString = myString.replace(/'/g, "&apos;");
myString = myString.replace(/</g, "&lt;");
myString = myString.replace(/>/g, "&gt;");

その後、作成中の XML にそれを入れる必要が生じたときに、次のようにしました。

myXML.find("Msg").text( encodeURIComponent(myString)); 

アンパサンド(&)の置換にスペースを入れないと、文字列内の他の置換が破損するため、おそらく最善の解決策ではないと思います。

4

1 に答える 1