Javascript 未捕获的语法错误:意外标记/

Javascript 未捕获的语法错误:意外标记/,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我只是将一堆javascript从内联移动到一个单独的js文件中,以利用缓存文件等 当我加载使用js文件的页面时,会收到以下错误消息: 未捕获的语法错误:意外标记/ 它抱怨的行号如下所示: url:'<?php echo site_url('switches/showknownvins/'.$Name.'/'.$model.'/'.$fn);?>', $.ajax({ url:'<?php echo site_url('switches/showknownvi

我只是将一堆javascript从内联移动到一个单独的js文件中,以利用缓存文件等

当我加载使用js文件的页面时,会收到以下错误消息:

未捕获的语法错误:意外标记/

它抱怨的行号如下所示:

url:'<?php echo site_url('switches/showknownvins/'.$Name.'/'.$model.'/'.$fn);?>',
    $.ajax({
    url:'<?php echo site_url('switches/showknownvins/'.$Name.'/'.$model.'/'.$fn);?>',
    type:'POST',
    dataType:'json',
    success: function(returnDataFromController) {

 });
当我将代码粘贴回PHP文件时,效果很好。 我看不出我的错误在哪里

有什么建议吗

谢谢

编辑1


如果我将.js文件重命名为.php并包含它,会有什么影响?web服务器还会缓存它吗?这才是我真正想要的。我正在努力提高我的web应用程序的速度,因为我有很多移动用户

默认情况下,以
.js
结尾的文件名不会通过PHP处理器运行

您可以重新配置Web服务器来执行此操作。或者将
.js
文件重命名为具有
.php
后缀


将其重命名为
.php
不应影响缓存,但您可以发送缓存控制头以尝试帮助浏览器退出。

默认情况下,以
.js
结尾的文件名不会通过php处理器运行

您可以重新配置Web服务器来执行此操作。或者将
.js
文件重命名为具有
.php
后缀


将其重命名为
.php
不应影响缓存,但您可以发送缓存控制头来尝试帮助浏览器解决问题。

JavaScript是内联的,因为它的一部分(特别是此处,JavaScript AJAX调用的
url
值)是由php在返回到客户端之前设置的。希望你能从问题中问题行的粘贴中看到这一点


当然,当PHP代码到达用户的浏览器时,浏览器不会理解它——这是PHP代码。要么保持代码的内联状态,要么做更难的事情,在没有找到请求的静态JS文件时设置服务器以提供动态JS。

JavaScript是内联的,因为它的一部分(这里是JavaScript AJAX调用的
url
值)在返回到客户端之前由PHP设置。希望你能从问题中问题行的粘贴中看到这一点


当然,当PHP代码到达用户的浏览器时,浏览器不会理解它——这是PHP代码。要么保留您的内联代码,要么做更困难的事情,设置您的服务器以在未找到请求的静态JS文件时为动态JS服务。

使用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());
        }
    }
}
$(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调用时自动加载,因此根据您的应用程序有多重,我建议分叉一个仅加载基本必需品的CI_控制器另外,如果您在调用JS文件时正在执行会话,那么事情会变得非常糟糕和不稳定。

使用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());
        }
    }
}
$(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调用时自动加载,因此根据您的应用程序有多重,我建议分叉一个仅加载基本必需品的CI_控制器另外,如果您在调用JS文件时执行会话操作,那么事情会变得非常糟糕和不稳定。

您尝试在JavaScript文件中执行PHP操作。PHP不会在.JS文件中解释。您是否设置了web服务器,在将JS文件发送到web浏览器之前使用PHP解析这些文件?看起来像CodeIgniter。您是否使用CodeIgniter通过PHP控制器为JS文件提供服务?听起来好像您获取了JavaScript代码,其中部分代码由PHP生成,并将其复制到
.JS
文件中。当然,这是行不通的。任何与PHP相关的内容都必须在PHP文件中(这可能就是为什么它首先是内联的)。查看您的
url:
——它被设置为一个名为
site\u url
的PHP函数的结果。您正在尝试在JavaScript文件中执行PHP操作。PHP不会在.js文件中解释。您是否设置了web服务器,在将js文件发送到web浏览器之前使用PHP解析js文件?看起来像CodeIgniter。您是否使用CodeIgniter通过PHP控制器为JS文件提供服务?听起来好像您获取了JavaScript代码,其中部分代码由PHP生成,并将其复制到
.JS
文件中。当然,这是行不通的。任何与PHP相关的内容都必须在PHP文件中(这可能就是为什么它首先是内联的)。查看
url:
——它被设置为一个名为
site\u url
的PHP函数的结果。这就是我的观点。如果他想从PHP文件生成JS,他必须告诉服务器通过PHP运行。阅读他的问题的第一行:他将JS从PHP生成的HTML文件移动到一个单独的文件中。将JS文件更改为不依赖嵌入式PHP逻辑会是一个更好的主意,将文件重命名为x.php将意味着它没有正确的mimetype,并且..失败,因为它没有函数
site\u url
。如果您关心mimetype,请添加
头(“text/javascript”)。但大多数浏览器都不会在意。@Barmar请在帖子中查看我的编辑1这是我的观点。如果他想从PHP文件生成JS,他必须告诉服务器通过PHP运行它