20

我知道这个问题已经被问过很多次,但我找不到与我的问题相似的地方。我只在 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);

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

4

15 回答 15

17

您可以检查您的网络(控制台)并查看来自服务器的答案......“<”将是您回复的第一个字母。类似“<”未定义索引 XY in line Z>”

于 2013-10-24T21:13:48.660 回答
8

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

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

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

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

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

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

于 2015-02-17T01:01:17.310 回答
7

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

于 2013-10-25T21:26:05.753 回答
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>
于 2016-07-09T16:11:35.070 回答
2

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

于 2013-10-25T07:38:23.543 回答
1

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

于 2016-04-22T16:16:16.173 回答
1
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 < ”。

于 2016-08-17T10:38:38.853 回答
1

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

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

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

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

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

于 2017-05-04T11:29:23.260 回答
1

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

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

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

您可以将它放在关闭配置标记之前的任何位置。

于 2017-12-12T17:22:58.003 回答
0

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

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

于 2014-07-22T04:52:14.950 回答
0

将其更改为

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

这样 ajax 就不会尝试将数据解析成 json 或类似的

于 2015-05-05T05:39:39.667 回答
0

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

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

$response['status'] = $status;
$response['message'] = $message;
$response['param'] = $param;

echo json_encode($response);

而导致“Unexpected token <”错误的错误仅仅是在某些情况下没有声明$message(但只有$status 和$param)。所以,在代码的开头添加了这个。

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

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

于 2015-11-04T08:07:57.440 回答
0

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

于 2017-03-15T16:17:35.193 回答
0

唯一对我有用的地方是当我将脚本放在public我所在的文件夹中index.html,然后将它们<script type="text/javascript" src="test/test.js"></script>放在<body>标签内。

于 2017-07-19T18:06:54.453 回答
0

就我而言,主机已iisnode在我的web.config文件中启用,因此我已发表评论。

<?xml version="1.0" encoding="UTF-8"?>
 <configuration>
   <system.webServer>
    <handlers>
        <!-- <add name="iisnode" path="*.js" verb="*" modules="iisnode" /> -->
    </handlers>
  </system.webServer>
 </configuration>
于 2021-06-03T11:15:48.513 回答