0

引用符が含まれる文字列を返すNetSuiteのapi関数へのjavascript呼び出しに問題があります。呼び出しが行われるたびにエラーがスローされます。

var selling_point_1 = "<%=getCurrentAttribute('item','custitemsellingpoint1')%>";

デバッガーを見ると、これは次のように評価されます。

var selling_point_1 = "Product Dimensions: H:14" W:24"";

これに対する文字列関数(.lengthやcharAt(0)など)もエラーをスローします。関数呼び出しが何を返すかを制御できないので、埋め込まれた引用符を処理する方法を知る必要があります。

ジョン、どんな助けでも大歓迎です

4

2 に答える 2

0

使用できる最も堅牢な方法ではありませんが、次のようになります。

var selling_point_1 = escape("<%=getCurrentAttribute('item','custitemsellingpoint1')%>");

これは実際にはURIをエスケープするためのものですが、厄介な二重引用符を取り除き、さらにunscapeを使用して元の形式に戻すことができます。提案されたように

var selling_point_1 = '<%=getCurrentAttribute(\'item\',\'custitemsellingpoint1\')%>';

あなたの場合にも機能するはずです。

于 2012-06-14T16:14:54.670 に答える
0

ほぼ同じ問題を扱っている人については、このスレッドを参照してください。簡単に言うと、サーバー側のコードで(つまり、ブロック内で)ある種のエスケープ関数を実行して、エスケープ<%=...%>された値のみがクライアント側のコードに挿入されるようにする必要があるということです。以下のすべてのソリューションは、無制限の数の一重引用符と二重引用符を処理できます。

私の最初の提案は試してみることです:

var selling_point_1 = decodeURI("<%=Server.URLEncode(getCurrentAttribute('item','custitemsellingpoint1'))%>");

これにより、次のようなサーバー側JSが生成されます。

var selling_point_1 = decodeURI("Product Dimensions: H:14%22 W:24%22");

decodeURIJavaScript関数はバックを引用符に変換し、%22正しい文字列がに格納されselling_point_1ます。

それが失敗した場合は、次のようなことも試してみてください。

var selling_point_1 = unescape("<%=HttpServerUtility.HtmlEncode(getCurrentAttribute('item','custitemsellingpoint1'))%>");

これは同様に動作しますが、引用符を\"シーケンスに調整します。これは、JavaScriptによって通常の引用符に変換されますunescape

于 2012-06-15T04:16:37.280 に答える