0

导入 js 文件很简单……只需使用>script src='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
      }


但我不确定第二个 ajax 执行是否足以现在能够成功调用这些函数。
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);
   });
}

这意味着您不太可能用 1000 个待处理的 ajax 请求挂起浏览器它会询问结果,当它得到它们时,它将询问下一组结果。

于 2013-02-15T23:35:53.137 回答