我知道这个问题已被多次询问,但我发现与我的问题没有相似之处。我只在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);
所以我在这里看不到问题,有人可以帮我解决这个问题。
答案 0 :(得分:16)
您可以检查您的网络(控制台)并查看服务器的答案......“<”将是您回复的第一个字母。类似于“<”未定义的索引XY在行Z>“
中答案 1 :(得分:7)
我对此的解决方案令人难以置信。
<script type="text/javascript" src="/js/dataLayer.js?v=1"></script>
src属性中的文件名必须为小写:
<script type="text/javascript" src="/js/datalayer.js?v=1"></script>
这有点莫名其妙地解决了这个问题。
在这两种情况下,参考都返回404进行测试。
答案 2 :(得分:6)
Uncaught SyntaxError: Unexpected token <
使用@Mario回答时出错,但这只是我问题的一部分。另一个问题是,javascript没有从PHP文件中获取任何数据。这是在PHP文件中使用此代码解决的:header("Content-Type: text/javascript; charset=utf-8");
这个答案可以在这个链接上找到,我在那里开了另一个问题来解决这个问题:Can't receive json data from PHP in Chrome and Opera
答案 3 :(得分:4)
在测试示例应用程序时,我在这两行中得到了同样的错误(&#34; Uncaught SyntaxError:Unexpected token&lt;&#34;)。
<script type = "text/javascript" src="raphael-min.js"></script>
<script type = "text/javascript" src="kuma-gauge.jquery.js"></script>
在控件之后,我意识到,本地文件位置不正确,我的本地服务器应用程序返回默认页面作为结果。客户端应用程序可以找到文件,但创建的文件是默认页面,而不是* .js文件。所以我收到Uncaught SyntaxError:Unexpected token&lt;
我改变了intenet上的原始位置并解决了。
<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>
答案 4 :(得分:2)
要覆盖您在Chrome中(可能在Safari中)可能遇到的错误,请尝试将Ajax参数设置为dataType: "json"
。然后,您不应在parseJSON()
上致电obj
,因为您获得的回复会被反序列化。
答案 5 :(得分:1)
我已对此代码进行了评论:// $('#description').val('<?php echo $_POST['description']; ?>');
我收到了该错误。
答案 6 :(得分:1)
header("Location: route_to_main_page");
我在使用自定义404错误处理文件时遇到此问题。它不是抛出一些html内容,而是重定向到主页面url。它运作良好。
然后我将其用作下一个项目的骨架,因此不会更改&#34; route_to_main_page&#34;实际上在新项目(不同的URL)上变成了&#34; route_to_external_url&#34;所以代码中的任何404错误(缺少css样式表,js库)都会返回&#34; 未捕获的SyntaxError:意外的令牌&lt; &#34;。
答案 7 :(得分:0)
如果您尝试执行Ajax文件上传或类似的操作,则必须在打印ajax响应文本后摆脱显示更多HTML。可能会出现此错误消息。如果您使用的是PHP框架,则必须遵循框架语法来结束应用程序。如果您正在编写纯PHP代码,则可以在ajax响应文本后使用“exit”。
希望这有助于节省一些人为此找到解决方案的时间。 :)快乐的编码!!!
答案 8 :(得分:0)
将其更改为
$.post({
url = 'getData.php',
data : { 'id' id } ,
dataType : 'text'
});
这样ajax就不会尝试将数据解析为json或类似的
答案 9 :(得分:0)
似乎每个人都有不同的经验,以及其他解决方案:)这是我的故事&#34;。
我的东西来自一个用ajax获取的validate.php文件。输出意味着:
$response['status'] = $status;
$response['message'] = $message;
$response['param'] = $param;
echo json_encode($response);
导致&#34;意外令牌&lt;&#34;错误只是在某些情况下$ message没有被声明(但只有$ status和$ param)。所以,在代码的开头添加了这个。
$message = ''; // Default value, in case it doesn't get set later on.
所以我想,那些&#34;小事情&#34;可能在这种情况下非常重要。所以一定要检查你的代码并使其具有防弹性。
答案 10 :(得分:0)
有同样的错误。我的问题是由于我的项目目录转移,并且未能调整服务器上静态文件的路径以反映新路径(即./src/public
但应该是./public
)。
答案 11 :(得分:0)
当我将一些js文件移动到文件夹然后部署到生产中时,我遇到了类似的问题,经过一番努力后我发现js文件实际上没有部署到生产中。所以
因此,在没有js文件的情况下,服务器然后服务器响应如下
<!doctype html>
<html>
<someTag />
<AnotherTag />
</html>
这就是为什么我们得到 未捕获的SyntaxError:意外的令牌&lt;
答案 12 :(得分:0)
我唯一能为我工作的地方是将脚本放在我public
所在的index.html
文件夹中,然后将这些<script type="text/javascript" src="test/test.js"></script>
放在<body>
标记内。
答案 13 :(得分:0)
可能是您尝试请求的资源通过您的网络应用配置受到限制访问,即必须记录用户才能让应用程序为该文件提供服务。
尝试将此添加到您的Web.Config文件(这适用于.NET应用程序):
<location path="js/resourcefile.js">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
您可以将其放在关闭配置标记之前的任何位置。
答案 14 :(得分: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>