0

jsファイルをインポートするのは簡単です... >scriptsrc ='file.js' type ='text / javascript' >>/script>を使用するだけです。
ただし、ソースコードには、ファイルの内容への直接URLが表示されます。

コンテンツは実行可能である必要がありますが、ソースURLを使用して直接表示することはできません。
AJAXを使用してfile.jsのコンテンツをメモリにロードするための最良の方法は何ですか。

私は次の最初の作業方法に到達しました(ちょうどそしてアイデア、完全に欠陥がありますか?):

function get_contents() {

      -> ajax execute PHP {copy 'file.js' to 'token.js' in tmp-directory}
      -> ajax get contents of 'tmp/token.js' and load to memory
      -> ajax execute PHP {delete 'tmp/token.js' in tmp-directory}

      return(true);    // content (ie. functions) should now be usable
      }


しかし、2番目のajax excuteが、関数を正常に呼び出すことができるようになるのに十分かどうかはわかりません。
PHPはコンテンツを返しますが、javascript'ajax success'はそれを変数として見る(そして保存する)かもしれません... doh!

このajaxの成功のアイデアはうまくいくでしょうか??
誰かがより良いアイデアを提案できますか?


編集:
最初の回答によると、このような働き方は事実上そして人間的に不可能です。
一般的な関数を「通常の」保護されていない方法でロードし、あまり頻繁に発生しない計算にJerryの提案(コメントを参照)を使用することで、これを解決します。


編集#2:
以下の(時間のかかる)問題は、次のテンプレートに従うことで解決できます。
提案された「隠されたPHPコード」メソッドを引き続き使用します。
私はYoutubeビデオのようにバッファ(または合計)を利用しています...「ビデオデータ」が「AJAX-PHP関数からの結果」であることを除いて。

AJAX request "30 cycle", "60 cycle", "300 cycle", "600 cycle"
     store result to buffer
initiate "start cycle"

function cycle() // run every second !!
{
//do stuff... no AJAX needed
//do some more stuff... like animations and small calculations

//per 30 cycle (30 seconds)
if ($cycle==30)
    {
    perform last "30 cycle" AJAX result [PHP-function set "A"]
    ... when finished: AJAX request "30 cycle"
                            store result to buffer in 'background'
    }

//per 60 cycle (1 minute)
if ($cycle==60)
    {
    perform last "60 cycle" AJAX result [PHP-function set "B"]
    ... when finished: AJAX request "60 cycle"
                            store result to buffer in 'background'
    }

//and so on....
}

最初の質問は99%解決しました(開発者ツールのために-1)。
コメントと提案をありがとう。

4

1 に答える 1

1

JavaScriptファイルを多数の個別の関数に分割したとしても、すべてを元に戻すのにほとんど手間がかかりません。

最新のブラウザでは、ファイルが「メモリにロード」されていても、何がロードされたかを正確に確認できます。

ブラウザに付属している開発者ツールを使用してみてください。ブラウザを使用して、Ajax呼び出しがいつ行われたか、正確にテキスト形式でロードされたものを確認できます。

PHPとJavaScriptを混在させている場合は、PHPが提供する結果の表示にJavaScriptを使用している間、PHPコードに機密性の高いものをすべて配置する必要があります。

編集:あなたのアップデートに従って、「サイクル」を行う代わりに、これを行うことができませんでしたか?


function pollAjax()
{
   $.ajax({
      -- ajax settings --
    }).success(function(data) {
        // do something with our results
        doSomething(data);
        // Fire again to get the next set of results. 
        setTimeout(function() {pollAjax()}, 10);
   });
}

これは、何千もの保留中のajaxリクエストでブラウザをハングアップする可能性が低いことを意味します。結果を要求し、取得すると、次の一連の結果を要求します。

于 2013-02-15T23:35:53.137 に答える