【问题标题】:Uncaught SyntaxError: Unexpected token < On ChromeUncaught SyntaxError: Unexpected token < On Chrome
【发布时间】:2013-11-03 14:02:36
【问题描述】:

我知道这个问题已被问过很多次,但我找不到与我的问题相似的地方。我只在 Chrome 中收到此错误,在其他所有浏览器中一切正常。我在几个地方使用 JSON 返回数据,但由于我的代码在其他浏览器中工作,我认为它没有任何问题。 Chrome 没有显示错误在哪里(在我的代码中)它显示了这些错误:

这就是我使用 JSON 的方式:

$.post("getData.php", {'id' : id}, function(data){
        var obj = jQuery.parseJSON(data);
.
.
.

... some mysqli query
$data = $query->fetch_assoc();
echo json_encode($data);

所以我在这里没有看到问题,有人可以帮我解决这个问题。

【问题讨论】:

  • 什么是状态码,200 OK?如果没有,您可能会获取错误响应的 html,它不会解析并生成此类错误。可能与您的 SQL 查询有关。
  • 一切都 200 OK,在某些地方我得到 200 Found。正如我所说,它在 Firefox 中完美运行,如果它在 Firefox 中运行,我看不出为什么会出现错误
  • 您是否尝试关闭 AdBlock 并进行测试?
  • @Mario 是的,我试过了,但还是一样

标签: json google-chrome


【解决方案1】:

您可以检查您的网络(控制台)并查看来自服务器的答案...“”

【讨论】:

  • 你能提供一个活生生的例子吗?
  • 对不起,我不能。我注意到它给了我第一个 中,如果我删除
  • No...如果您从服务器收到 jquery 无法解析的响应,您将看到类似这样的未计算错误... .. 许多 Seen 错误也是“o”或“u”和这封信是响应 jquery cant parse....的第一个标志。
【解决方案2】:

我对此的解决方案令人难以置信。

<script type="text/javascript" src="/js/dataLayer.js?v=1"></script>

src 属性中的文件名需要小写:

<script type="text/javascript" src="/js/datalayer.js?v=1"></script>

这有点莫名其妙地解决了这个问题。

在这两种情况下,引用都返回 404 进行测试。

【讨论】:

  • 我遇到了同样的问题,所以将文件名更改为另一个名称,它可以工作。我的文件名在任何地方都没有大写字母。
  • 这为我解决了问题。奇怪的是,它使用大写字母有一段时间了 - 然后突然抛出错误。
【解决方案3】:

Uncaught SyntaxError: Unexpected token &lt; 使用 @Mario 答案时出错,但这只是我的问题的一部分。另一个问题是,javascript 没有从 PHP 文件中获取任何数据。这是使用此代码解决的,在 PHP 文件中:header("Content-Type: text/javascript; charset=utf-8"); 这个答案可以在这个链接上找到,我在这里打开了另一个问题来解决这个问题:Can't receive json data from PHP in Chrome and Opera

【讨论】:

  • 到目前为止我遇到过两次这个问题。第一次解决方案是将.php 文件中的所有echos 替换为具有不同条目的1 个数组。第二次(刚刚),它更简单:我不得不删除我的 .php 文件顶部的评论(文件开始像这样:&lt;!-- comment... --&gt; &lt;?php....?&gt;)。这就是&lt; 的来源。
  • 它仍然对我不起作用。马里奥的答案是什么,我找不到。
【解决方案4】:

在测试示例应用程序时,这两行出现了相同的错误(“Uncaught SyntaxError: Unexpected token

<script type = "text/javascript"  src="raphael-min.js"></script>
<script type = "text/javascript"  src="kuma-gauge.jquery.js"></script>

控制后,我意识到,本地文件位置不正确,我的本地服务器应用程序返回默认页面作为结果。客户端应用程序可以找到文件,但创建的文件是默认页面,而不是 *.js 文件。所以我收到 Uncaught SyntaxError: Unexpected token

我在互联网上更改了原始位置并解决了。

<script type = "text/javascript"  src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.2/raphael-min.js"></script>
<script type = "text/javascript"  src="//www.jqueryscript.net/demo/Creating-Animated-Gauges-Using-jQuery-Raphael-js-kumaGauge/js/kuma-gauge.jquery.js"></script>

【讨论】:

  • 当我的脚本位于子目录 stuff/scripts 中时发生这种情况,但我转到 URL stuff/whatever/ 而不是 stuff/whatever。因为stuff/whatever/scripts 不存在。
【解决方案5】:

要覆盖您在 Chrome(也可能是 Safari)中可能遇到的错误,请尝试将 Ajax 参数设置为 dataType: "json"。那么你不应该在obj 上调用parseJSON(),因为你会得到反序列化的响应。

【讨论】:

  • 我没有再看到这个错误,但我没有从服务器收到任何数据,尽管同样的代码在 Firefox 中有效:pastebin.com/md2GC4CA
  • 您希望从 ajax 响应中获得什么样的数据 - html、JSON?
【解决方案6】:

我已经评论了我的这段代码:// $('#description').val('&lt;?php echo $_POST['description']; ?&gt;');,我得到了那个错误。

【讨论】:

    【解决方案7】:
    header("Location: route_to_main_page");
    

    我在使用自定义 404 错误处理文件时遇到了这个问题。不是抛出一些 html 内容,而是假设重定向到主页 url。效果很好。

    然后我将其用作下一个项目的骨架,因此实际上没有更改新项目(不同 URL)上的“route_to_main_page”变成了“route_to_external_url”,因此代码中的任何 404 错误(缺少 css 样式表、js 库) 将返回“Uncaught SyntaxError: Unexpected token ”。

    【讨论】:

      【解决方案8】:

      当我将一些 js 文件移动到文件夹然后部署到生产中时,我遇到了类似的问题,经过一番努力,我发现 js 文件实际上并没有部署到生产中。所以

      1. 确保显示错误的文件确实存在于 服务器
      2. 给定的路径是正确的

      所以,在没有js文件的情况下,服务器然后服务器响应如下

      <!doctype html>
          <html>
              <someTag />
              <AnotherTag />
          </html>
      

      这就是为什么我们得到 Uncaught SyntaxError: Unexpected token

      【讨论】:

        【解决方案9】:

        可能是您尝试请求的资源通过您的网络应用配置受到限制访问,即必须登录用户才能让应用程序提供文件。

        尝试将其添加到您的 Web.Config 文件中(这是用于 .NET 应用程序):

        <location path="js/resourcefile.js">
          <system.web>
            <authorization>
              <allow users="?" />
            </authorization>
          </system.web>
        </location>
        

        你可以把它放在结束配置标签之前的任何地方。

        【讨论】:

          【解决方案10】:

          如果您尝试执行 Ajax 文件上传或类似的操作,则必须在打印 ajax 响应文本后摆脱显示进一步的 HTML。可能会给出此错误消息。如果您使用 PHP 框架,则必须遵循框架语法来结束应用程序。如果您正在编写纯 PHP 代码,则可以在 ajax 响应文本之后使用“exit”。

          希望这将有助于节省一些人寻找解决方案的时间。 :) 编码愉快!!!

          【讨论】:

            【解决方案11】:

            改成

            $.post({ 
                     url = 'getData.php',  
                     data : { 'id' id } , 
                     dataType : 'text'
                   });
            

            这种方式ajax不会尝试将数据解析成json或类似的

            【讨论】:

              【解决方案12】:

              似乎每个人都对此解决方案有不同的体验 :) 这是我的“故事”。

              我的东西来自一个用 ajax 获取的 validate.php 文件。输出应该是:

              $response['status'] = $status;
              $response['message'] = $message;
              $response['param'] = $param;
              
              echo json_encode($response);
              

              导致“Unexpected token

              $message = ''; // Default value, in case it doesn't get set later on.
              

              所以我想,在这种情况下,那些“小事”可能非常重要。因此,请务必真正检查您的代码并使其防弹。

              【讨论】:

                【解决方案13】:

                有同样的错误。我的问题是由于在我的项目目录中移动,并且未能调整服务器上静态文件的路径以反映新路径(即是 ./src/public 但应该是 ./public)。

                【讨论】:

                  【解决方案14】:

                  唯一对我有用的地方是当我将脚本放在我的index.html 所在的public 文件夹中,然后将这些&lt;script type="text/javascript" src="test/test.js"&gt;&lt;/script&gt; 放在&lt;body&gt; 标记中。

                  【讨论】:

                    【解决方案15】:

                    就我而言,主持人在我的web.config 文件中启用了iisnode,所以我发表了评论。

                    <?xml version="1.0" encoding="UTF-8"?>
                     <configuration>
                       <system.webServer>
                        <handlers>
                            <!-- <add name="iisnode" path="*.js" verb="*" modules="iisnode" /> -->
                        </handlers>
                      </system.webServer>
                     </configuration>
                    

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-01-31
                      • 2013-11-11
                      • 2019-03-18
                      • 2012-05-17
                      相关资源
                      最近更新 更多