1

メインのindex.htmlファイルでJavascript関数を定義しています。
このページの一部は、Ajax(prototype.jsを使用)を使用して更新されます。返されたAJAXコード内からメインファイルで定義されたJavasript関数を実行しようとすると失敗します。
evalScripts:Ajax.Updaterprototype.js関数のtrueオプションは役に立ちません。
これを修正するにはどうすればよいですか?前もって感謝します。

これは私のindex.htmlファイルです:

<html>
<head>
<script src="js/lib/prototype.js" type="text/javascript"></script>
<script type="text/javascript">
    function foo(x) {
        alert(x);
    }

    function loadContent() {
      new Ajax.Updater('responseArea', 'response.php' , { evalScripts: true } );
    }
</script>
</head>

<body>
    <div id="main">
        <span style="cursor: pointer" onclick="loadContent();">Click on me to call Ajax response</span><br>
        <br></br>
    </div>

    <div id="responseArea">
        This will be replaced with Ajax response
    </div>
</body>
</html>


This is response.php:
  <?php
         echo '<span style="cursor: pointer" onclick="foo("foo Called from within Ajax response");">
             Click on me to call foo from within Ajax response</span>';
   ?>
4

1 に答える 1

0

evalScriptsであるためtrue、応答に任意のJSスニペットを含めることができ、AJAX呼び出しが完了すると実行されます。

<script type="text/javascript">
foo("foo Called from within Ajax response");
</script>

実行したくないが、より多くのJSをインクルードしたい場合は、通常のJSインクルードタグを挿入できます。

<script type="text/javascript src="yournewcode.js"></script>

これは、ブラウザがファイルをキャッシュできるようにするため、JSインラインを含めるよりも優れています。

于 2012-06-20T14:32:55.540 に答える