【问题标题】:syntax error: unexpected token <语法错误:意外标记 <
【发布时间】:2013-09-04 20:59:03
【问题描述】:

试了很多都没办法,总是出现这个错误 我试着只用一个选项看是否通过,改变了jquery的调用,但没有。

我在互联网上的各个地方查看了有关此错误的信息,但无法解决或理解它发生的原因。 在我的电脑上使用 EasyPHP 可以完美运行,但是当我放到网上时就不行了。

语法错误:意外标记

这是我的代码:

$(function(){
$('#salvar').click(function(){
    var key = 'salvar';
    var title = $('#title').val();
    var opcao1 = $('#opcao1').val();
    var opcao2 = $('#opcao2').val();
    var opcao3 = $('#opcao3').val();
    var opcao4 = $('#opcao4').val();
    var opcao5 = $('#opcao5').val();
    var opcao6 = $('#opcao6').val();

    if(title.length > 0){
        if(opcao2.length > 0){
            $('#resposta').removeClass().html('Salvando a enquete...<br clear="all"><br><img src="images/switch-loading.gif" />');
            $.ajax({
            type : 'POST',
            url : 'funcoes/enquete_adm.php',
            dataType : 'json',
            data: {key:key,title:title,opcao1:opcao1,opcao2:opcao2,opcao3:opcao3,opcao4:opcao4,opcao5:opcao5,opcao6:opcao6},
            success : function(data){
                if(data.sql == 'ok'){
                        $('#resposta').addClass('success-box').html('Enquete Salva!').fadeIn(1000);
                        $('#control').fadeOut();
                    }else if(data.sql == 'error'){
                        $('#resposta').addClass('info-box').html('Ops, aconteceu um erro. Por favor, tente novamente').fadeIn(1000);
                    }
                },
            error: function (XMLHttpRequest, textStatus, errorThrown) {    
                alert("XMLHttpRequest " + XMLHttpRequest[0]);alert(" errorThrown: " + errorThrown);alert( " textstatus : " + textStatus);    
            }
            });
        }else{
            $('#resposta').addClass('warning-box').html('É necessário no mínimo duas opções');
        };
    }else{
        $('#resposta').addClass('warning-box').html('Coloque a pergunta da enquete');
    };
    return false;

});
}); // End

【问题讨论】:

  • 它会说控制台中的哪个文件吗?
  • 错误应该给你一个文件和行号,发布它指向的特定行。
  • 我不记得在哪里发现了错误。但在php代码中。

标签: javascript jquery ajax syntax token


【解决方案1】:

你有不必要的;(分号):

此处示例:

 }else{
        $('#resposta').addClass('warning-box').html('É necessário no mínimo duas opções');
    };

} 后面的 ; 不正确。

这里的另一个例子:

}else{
    $('#resposta').addClass('warning-box').html('Coloque a pergunta da enquete');
};

【讨论】:

    【解决方案2】:

    这通常发生在您包含或发布到不存在的文件时。 服务器将返回一个带有

    的常规 html 格式的“404 Not Found”
    '<html></html>' 
    

    标签。第一个 chevron

    如果您尝试将 'funcoes/enquete_adm.php' 更改为绝对 URL 会怎样?

    编辑(几年后)

    根本原因可能并不总是来自 404 错误。有时您可以向 API 发出请求并收到 HTML 格式的错误。我偶然发现了几个 API 端点应该返回的情况

    {
       error: "you must be authenticated to make this request"
    }
    

    使用标题 401。相反,我得到了

    <html>You must be authenticated to make this request</html>
    

    带有标题 200。

    鉴于标头是 200,您无法事先判断请求已失败,并且您只能尝试 JSON.parse 响应以检查其是否有效。

    【讨论】:

    • 奇怪,因为我有几个其他命令使用 JS URL 的方式相同,而且效果很好,我只是给你这个问题。并且在我的电脑上完美运行时放在服务器上不起作用。
    • 谢谢。这对我有用。我拼错了我的 js 文件名。
    【解决方案3】:

    在 java 脚本函数中忽略作为 false 的参数传递

    例如:

    function getCities(stateId,locationId=false){    
    
        // Avoid writting locationId= false kind of statements
       /*your code comes here*/
    
     }
    

    避免写 locationId= 错误的语句,因为这会在 chrome 和 IE 中出现错误

    【讨论】:

      【解决方案4】:

      我遇到了类似的问题,我的问题是我正在发送 javascript 来显示控制台消息。

      即使我在浏览器中查看文件(不是通过应用程序),它也完全符合我的预期(例如,没有显示额外的标签),但是在 html/text 输出中显示了并且是试图被解析。

      希望这对某人有所帮助!

      【讨论】:

        【解决方案5】:

        我怀疑您的某个脚本包含source map URL。 (例如,缩小的 jQuery 包含对源映射的引用。)

        当您打开 Chrome 开发者工具时,Chrome 会尝试从 URL 获取源映射以帮助调试。但是,源映射实际上并不存在于您的服务器上,而是向您发送一个包含 HTML 的常规 404 页面。

        【讨论】:

          【解决方案6】:

          因为我遇到了同样的错误,但出于完全不同的原因,就把它扔在这里。

          我正在通过 node/express/jade 提供服务,并且已经移植了一个旧的翡翠文件。当 Typekit 失败时,其中一条是不要出错:

          script(type='text/javascript')
            try{Typekit.load();}catch(e){}
          

          这似乎无伤大雅,但我终于意识到,对于要添加内容的玉脚本块,您需要一个.

          script(type='text/javascript').
            try{Typekit.load();}catch(e){}
          

          简单,但很棘手。

          【讨论】:

            【解决方案7】:

            此错误也可能是由于对代码中有错误的 PHP 脚本的 JSON AJAX 调用引起的。服务器通常设置为返回用 html 标记格式化的 PHP 错误信息。此响应被解释为无效 JSON,从而导致“意外令牌

            要使用 Chrome 查看 PHP 错误,请转到网络检查器中的网络面板,单击左侧列出的 PHP 文件,然后单击响应选项卡。

            【讨论】:

              【解决方案8】:

              通过 ajax 发布时,最好先正常提交,以确保调用的文件始终返回有效数据 (json),并且没有带有 html 标记或其他错误的错误

              <form action="path/to/file.php" id="ajaxformx">
              

              通过将x添加到id值,jquery不会处理它。

              确定一切正常后,从id="ajaxform" 中删除x,并清空action 属性值

              这就是几分钟前我为自己排序相同错误的方式:)

              【讨论】:

                【解决方案9】:

                我怀疑您收到 text/html 编码以响应您的请求,所以我认为问题是:

                dataType : 'json',
                

                试试改成

                dataType : 'html',
                

                来自http://api.jquery.com/jQuery.get/

                数据类型 类型:字符串 服务器预期的数据类型。默认值:智能猜测(xml、json、脚本或 html)。

                【讨论】:

                  【解决方案10】:

                  我在通过 ajax 发布表单时也有syntax error: unexpected token &lt;。然后我用 curl 看看它返回了什么:

                  curl -X POST --data "firstName=a&lastName=a&email=array@f.com&pass=aaaa&mobile=12345678901&nID=123456789123456789&age=22&prof=xfd" http://handymama.co/CustomerRegistration.php
                  

                  我得到了这样的回应:

                  <br />
                  <b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /home/handymama/public_html/CustomerRegistration.php:1) in <b>/home/handymama/public_html/CustomerRegistration.php</b> on line <b>3</b><br />
                  <br />
                  <b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /home/handymama/public_html/CustomerRegistration.php:1) in <b>/home/handymama/public_html/CustomerRegistration.php</b> on line <b>4</b><br />
                  <br />
                  <b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /home/handymama/public_html/CustomerRegistration.php:1) in <b>/home/handymama/public_html/CustomerRegistration.php</b> on line <b>7</b><br />
                  <br />
                  <b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /home/handymama/public_html/CustomerRegistration.php:1) in <b>/home/handymama/public_html/CustomerRegistration.php</b> on line <b>8</b><br />
                  

                  所以我只需将日志级别更改为仅错误而不是警告。

                  error_reporting(E_ERROR);
                  

                  【讨论】:

                    【解决方案11】:

                    通过 iframe 加载的页面发生在我身上。 iframe src 页面有一个 404 脚本引用。显然我在父页面中找不到脚本引用,所以我花了一段时间才找到罪魁祸首。

                    【讨论】:

                      【解决方案12】:

                      错误 SyntaxError: Unexpected token &lt; 可能意味着 API 端点未在其文档正文中返回 JSON,例如由于 404。

                      在这种情况下,它期望找到一个{(JSON 的开头);相反,它会找到 &lt;(标题元素的开头)。

                      成功响应:

                      <html>
                        <head></head>
                        <body>
                          {"foo": "bar", "baz": "qux"}
                        </body>
                      </html>
                      

                      未找到响应:

                      <html>
                        <head></head>
                        <body>
                          <h1>Not Found</h1>
                          <p>The requested URL was not found on the server.  If you entered the URL manually please check your spelling and try again.</p>
                        </body>
                      </html>
                      

                      尝试在浏览器中访问数据端点的 URL 以查看返回的内容。

                      【讨论】:

                        【解决方案13】:

                        确保你没有在

                        之间包含 jquery 代码

                        脚本>

                        如果是这样删除它并且代码将正常工作,它在我的情况下工作。

                        【讨论】:

                          【解决方案14】:

                          我检查了所有包含的 JS 路径

                          示例 改变这个

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

                          <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" type="text/javascript"></script>
                          

                          【讨论】:

                            【解决方案15】:

                            从我的代码中删除这一行解决了我的问题。

                            header("Content-Type: application/json; charset=UTF-8"); 
                            

                            【讨论】:

                              【解决方案16】:

                              对我而言,上述解决方案均无效,因此我不得不深入调查问题的根源,最终选择了router path

                              请检查您的路径 { path:"/register/onboard" ... } 无效,但 { path:"/register_onboard" ... } 有效。所以我不知道为什么它可能是一个包。

                              【讨论】:

                                猜你喜欢
                                • 1970-01-01
                                • 1970-01-01
                                • 2015-05-28
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 2021-09-03
                                • 1970-01-01
                                相关资源
                                最近更新 更多