2011-07-08 3 views
0

私は{Cli:FirstName}のような構文を使用してデータベースフィールドを参照できるプログラム内で作業しています。これはクライアントのファーストネームを参照しています。プログラムでは、HTMLとJavaスクリプトを使用して、プログラム内のウィンドウ内にWebページを表示することができます。文字列からアポストロフィを削除する

私が抱えている問題は、正しい情報を表示するためにたくさんのページとスクリプトを書いたことですが、問題が見つかりました。私は関数が外部の.jsファイル内にあるので、私は、このような

function a('{Cli:FirstName}'},'{Cli:LastName}'){ 
logic; 
} 

としての機能にデータベースフィールドを渡すスクリプトは、私はこのようにそれを渡しています。私が使用しているプログラムでは、プログラムのウィンドウに表示されている.htmlファイル以外のデータベースフィールドを直接参照することはできません。したがって、.js内にあるすべての関数には、同様のパラメータリストがあります。私はページのヘッダーに関数を書いて、フィールドをパラメータとして渡すことなく直接データベースフィールドにアクセスできますが、これは他の問題を引き起こします。プログラムの速度やその他の制限のためにほとんどすべてのスクリプトを移動しましたウェブページを表示する。

問題は、アポストロフィを持つデータベースフィールドをthe.jsファイルの関数に渡そうとしたときに発生します。アポストロフィは文字列区切り文字なので、関数呼び出しがクラッシュします。一部の機能はイベント駆動型ですが、ページの読み込み時にも機能します。操作の順序は、まずプログラムがデータベースクエリを実行した後、Webページの通常の流れに従ってHTMLをレンダリングすることです。ページを読み込んだときにフィールドにアポストロフィがあり、それが関数呼び出しにあると、エラーメッセージが表示されます。 Example Name:O'Malleyはスクリプトをクラッシュさせますか? データベースクエリが完了した後に修正する必要があります。関数に渡す前に、関数のパラメータとして使用するフィールドを調べ、アポストロフィをエスケープすることができます。

私の最初の考えはhtmlページに関数を書いているので、データベースフィールドに直接アクセスしてアポストロフィをエスケープし、その値を他の関数に渡すことができます。このようにアポストロフィ除去機能は、アポストロフィを持つ他のフィールドでも機能するように一般的です。関数を記述し、その関数の結果を別の関数に渡す方法については助けが必要です。

function removeApostrophe(){ 
var firstName = ‘{CLI:FirstName}’; // sets the variable equal to the string in the database 
    // do this for each field I use as a parameter in other functions 
} 

答えて

0

理由だけではなく、あなたはそれをHTMLページに表示される方法を制御する能力を持っていない場合は簡単な解決策はありません二重引用符の代わりに、単一引用符

0

を使用していません。エンティティエスケープを使用する必要がある場合は可能です。これは完全には安全ではありませんが、単に文字列を二重引用符で囲むだけでは意味がありません: "

文字列に二重引用符が表示されないことを前提にしています。

関連する問題