1

ユーザーが商品をカートに追加したときに jQuery アラートを表示する php ページがあります。アラートに表示されるメッセージは、すべての言語要素が保存されている php ページの変数です。

$cartaddeditem='The product was added to your cart.\r\n You can view your <a href=\'cart.php?action=show\'>shopping cart</a> or click OK to continue shopping';

次に、ページで:

<body onload="jAlert('success', '<?=$cartaddeditem?>', '<?=$minicart?>');" <? } >

問題は、 $cartadditem var の引用符が原因でアラートが発生せず、firebug で次のようなエラーが発生することです。

Error: missing ) after argument list
Line: 1, Column: 22
Source Code:
jAlert('success', The product was added to your cart.\r\n You can view your <a href=\

jQuery のメッセージ文字列で引用符をエスケープするにはどうすればよいですか? 二重引用符と一重引用符、1 つまたは 2 つのバックスラッシュを使用していくつかのエスケープ タイプを試しましたが、何も機能しませんでした。

4

2 に答える 2

3

二重引用符を使用して HTML 属性を引用してみてください。

$cartaddeditem = 'The product was added to your cart.\r\n You can view your <a href="cart.php?action=show">shopping cart</a> or click OK to continue shopping';

onload属性を追加せず$(document).ready(に代わりに使用することをお勧めしますか?

$(function(){
    jAlert('success', '<?=$cartaddeditem?>', '<?=$minicart?>');
});

UPDATEjson_encode :引用符が衝突しないようにするために も使用できます。json_encode文字列でも機能し、二重引用符で囲まれた文字列を出力します (したがって、パラメーターの周りに引用符を追加しないでください)。

$(function(){
    jAlert('success', <?=json_encode($cartaddeditem)?>, <?=json_encode($minicart)?>);
});
于 2012-05-25T13:48:41.063 に答える
2

PHP 出力を適切にエスケープします。

<body onload="jAlert('success', 
  <?php echo json_encode($cartaddeditem); ?>, 
  <?php echo json_encode($minicart); ?>);" <? } >

アップデート

タグ属性内に記述されているため、二重引用符は機能しません (Thanks Rocket)!

addslashesしたがって、十分であることを期待する必要があります。

<body onload="jAlert('success', 
  '<?php echo addslashes($cartaddeditem); ?>', 
  '<?php echo addslashes($minicart); ?>');" <? } >

または、ロケットが彼の答えで説明したことを行います。

更新 2

\r\nところで、改行として評価されるように、PHP 文字列を二重引用符に変更する必要があります。

$cartaddeditem = "The product was added to your cart.\r\n You can view your <a href='cart.php?action=show'>shopping cart</a> or click OK to continue shopping";
于 2012-05-25T13:51:18.073 に答える