我只是将一堆javascript从内联移动到一个单独的js文件中,以利用缓存文件等。
当我加载使用js文件的页面时,收到以下错误消息:
未捕获的SyntaxError:意外的令牌/
它抱怨的行号看起来像这样:
url:'<?php echo site_url('switches/showknownvins/'.$Name.'/'.$model.'/'.$fn);?>',
这是ajax调用的一部分。上面和下面的代码行如下所示:
$.ajax({
url:'<?php echo site_url('switches/showknownvins/'.$Name.'/'.$model.'/'.$fn);?>',
type:'POST',
dataType:'json',
success: function(returnDataFromController) {
我总共有203行js代码,从:
开始$(document).ready(function(){
以
结尾 });
当我将代码粘贴回PHP文件时,它可以正常工作。 我无法看到我的错误在哪里。
有什么建议吗?
由于
编辑1
如果我将.js文件重命名为.php并包含该文件,会产生什么影响? Web服务器是否仍会缓存它?这就是我所追求的。我正在努力提高我的网络应用程序的速度,因为我有很多移动用户。
答案 0 :(得分:3)
JavaScript是内联的,因为它的一部分(特别是这里,JavaScript AJAX调用的url
值)在返回客户端之前由PHP设置。希望您可以在问题中粘贴有问题的行中看到这一点。
当然,当PHP代码到达用户的浏览器时,浏览器将无法理解它 - 它是PHP代码。要么保留你内联的代码,要么做更难的事情,并设置你的服务器来提供动态JS,如果/当找不到请求的静态JS文件时。
答案 1 :(得分:2)
默认情况下,以.js
结尾的文件名不会通过PHP处理器运行。
您可以重新配置您的网络服务器来执行此操作。或者将您的.js
文件重命名为.php
后缀。
将其重命名为.php
不应影响缓存,但您可以发送缓存控制标头以尝试帮助浏览器退出。
答案 2 :(得分:1)
使用CodeIgniter,您可以通过以下控制器为JS提供服务:
/codeigniter/2.1.4/yourAppName/controllers/resources.php
在resources.php
中添加:
class Resources extends CI_Controller
{
public function js()
{
// JS call should look like the code below in your HTML
// <script type="text/javascript" src="/resources/js/jsFileName.js"></script>
// $this->uri->uri_string() should give the string "resources/js/jsFileName.js"
if(is_file(APPPATH.'views/'.$this->uri->uri_string()))
{
header("Pragma: public");
header("Cache-Control: maxage=604800"); // 1 week
header('Expires: '.gmdate('D, d M Y H:i:s', (time()+604800)).' GMT'); // expire in 1 week
header('Content-type: text/javascript');
$this->load->view($this->uri->uri_string());
}
}
}
/codeigniter/2.1.4/yourAppName/views/resources/js/jsFileName.js
在jsFileName.js
中,您现在可以使用完整的CodeIgniter库和本机PHP:
$(document).ready(function(){
$.ajax({
url:'<?php echo site_url('switches/showknownvins/'.$Name.'/'.$model.'/'.$fn);?>',
type:'POST',
dataType:'json',
success: function(returnDataFromController){
}
});
});
值得注意的是,您在/config/autoload.php
中声明的任何自动加载都将在每次单独的JS调用时自动加载,因此根据您的APP的重量,我建议请求只加载必需品的CI_Controller。 此外,如果您在调用JS文件时正在进行会话,那么事情变得非常丑陋和不稳定。