0

JavaScript関数が呼び出されるPhpで事前に作成されたコードがあります

echo "<a href='javascript:submittemplate(".$temprow['templateid'].");'>".$temprow["templatename"]."</a></td>";

スクリプトは次のとおりです。

  <script>
        function submittemplate(templateid)
        {

            window.document.location.href = 'index.php?module=Users&action=UsersAjax&file=TemplateMerge&templateid='+templateid;

        }
 </script>

ここで、この関数にもう 1 つの引数を渡したいと思いました。
私がしたことはこれでした:

echo "<a href='javascript:submittemplate(".$temprow['templateid'].",".$mode.");'>".$temprow["templatename"]."</a></td>";


<script>
function submittemplate(templateid,mode)
{
alert("anything");
    window.document.location.href = 'index.php?module=Users&action=UsersAjax&file=TemplateMerge&templateid='+templateid;

}
</script>

後のコードは機能しません。私は何を間違っていますか?

4

4 に答える 4

1
  1. javascript: プロトコルを使用せず、onclick を使用して false を返す
  2. なぜJavaScriptを使用するのですか???
  <a href="'index.php?module=Users&action=UsersAjax&file=TemplateMerge&templateid=<?PHP echo $temprow['templateid']; ?>">.....
于 2012-09-03T09:30:02.907 に答える
1

出力している値のために、無効な Javascript 構文を生成していると思います。ブラウザの Javascript コンソールを開いて Javascript をデバッグし、エラーを確認します。

PHP の値を Javascript に出力するときは、構文が壊れないようにする必要があります。これを行う最善の方法は、JSON エンコードすることです。これは、JSON が有効なリテラル Javascript であるためです。HTML で値を HTML エンコードする必要があるのと同じように:

<a href="javascript:submittemplate(<?php echo htmlspecialchars(json_encode($temprow['templateid']), ENT_COMPAT); ?>, <?php echo htmlspecialchars(json_encode($mode), ENT_COMPAT); ?>);"><?php echo htmlspecialchars($temprow["templatename"]); ?></a></td>

これは非常に読みにくいワンライナーであるため、ターゲットonclickを使用するのではなく、Javascript を使用してイベントをリンクにバインドすることを検討する必要がありますhref="javascript:"http://en.wikipedia.org/wiki/Unobtrusive_Javascript#Separation_of_behavior_from_markupを参照してください。

于 2012-09-03T09:26:54.467 に答える
1

mode変数が の場合string、エラーが発生します。

例えばalert(myString Is Here) // throw error

そのはずalert("myString Is Here");

したがって、次のようになるように引用を追加する必要があります。

echo "<a href='javascript:submittemplate(".$temprow['templateid'].",\"".$mode."\");'>"

注意してください\"

于 2012-09-03T09:16:31.130 に答える
0

引数の周りにエスケープされた二重引用符を使用する必要があります

...submittemplate(\"".$temprow['templateid']."\");'>".

文字列を渡しているので

于 2012-09-03T09:11:54.883 に答える