Json 未捕获的语法错误:意外标记<;论铬

Json 未捕获的语法错误:意外标记<;论铬,json,google-chrome,Json,Google Chrome,我知道这个问题已经被问了很多次,但我找不到与我的问题相似的地方。我只在Chrome浏览器中遇到这个错误,在其他浏览器中一切正常。我在几个地方使用JSON返回数据,但由于我的代码在其他浏览器中工作,我认为它没有问题。 Chrome没有告诉我哪里有错误(在我的代码中),它告诉我这些错误: 这就是我使用JSON的方式: $.post("getData.php", {'id' : id}, function(data){ var obj = jQuery.parseJSON(data)

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

所以我看这里没有问题,有人能帮我吗。

你可以检查你的网络(控制台)并从服务器上看到答案。。。“要覆盖在Chrome(可能还有Safari)中可能遇到的错误,请尝试将Ajax参数设置为
dataType:“json”
。然后不应调用
parseJSON()
obj上的
,因为您将得到反序列化的响应。

未捕获语法错误:意外标记如果您试图执行Ajax文件上载或类似操作,您必须在打印Ajax响应文本后不再显示进一步的HTML。这可能会给出此错误消息。如果如果你使用的是PHP框架,你必须遵循框架语法来结束应用程序。如果你是纯PHP代码,你可以在ajax响应文本后使用“退出”


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

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

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

src属性中的文件名必须为小写:

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

这就莫名其妙地解决了这个问题

在这两种情况下,参考返回404进行测试。

将其更改为

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

通过这种方式,ajax不会试图将数据解析为json或类似的格式。

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

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

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

echo json_encode($response);

以及导致“意外标记我已对我的此代码进行了注释:
/$('#description').val('')的错误我得到了同样的错误(“未捕获的语法错误:意外的标记
我在自定义404错误处理文件时遇到了这个问题。它没有抛出一些html内容,而是重定向到主页url。它工作得很好


然后,我将其用作下一个项目的框架,因此没有改变新项目上的“route_to_main_page”(不同的URL)实际上变成了“route_to_external_URL”,因此代码中的任何404错误(缺少css样式表、js库)都会返回“未捕获SyntaxError:意外标记具有相同的错误。我的问题是由于在我的项目目录中移动,并且未能调整服务器上静态文件的路径以反映新路径引起的(即was
/src/public
,但应该是
/public
).

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

  • 确保显示错误的文件在中确实存在 服务器
  • 给出的路径是正确的
  • 因此,在没有js文件的情况下,服务器会以如下方式响应

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

    这就是为什么我们得到了未捕获的语法错误:意外标记它对我唯一有效的地方是当我将脚本放在
    index.html
    所在的
    public
    文件夹中,然后将这些
    放在
    标记中。

    可能是您试图请求的资源处于受限访问之下通过您的web应用程序配置,即必须登录用户,应用程序才能为文件提供服务

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

    
    

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

    在我的情况下,主机已在我的
    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>
    
    
    
    状态码是什么,200 OK?如果不是,你可能会得到错误响应的html,它不会解析和生成那种错误。可能是SQL查询的问题。一切都是200 OK,在某些地方我找到了200 OK。正如我所说的,它在Firefox中工作得很好,我看不出为什么会出现错误Firefox中的Works你试过关闭AdBlock并测试它吗?@Mario是的,我试过了,但它可能是错误的重复:未捕获的语法错误:意外标记你能提供一个实例吗?很抱歉,我不能。我注意到它给了我第一个<符号的错误。所以当前第一个<符号在,如果我删除<,那么它会给我相同的错误,但是相反,<它说!是意外的标记。不……如果您收到来自jquery无法解析的服务器的响应,您将看到类似这样的未经考虑的错误……许多看到的错误也是“o”或“u”这封信是jquery无法解析的响应的第一个信号……我再也看不到这个错误了,但我没有从服务器收到任何数据,尽管这段代码在Firefox中也可以工作:您希望从ajax响应中得到什么样的数据?html,JSON?到目前为止,我已经有两次遇到这个问题。第一次解决方案是替换所有
    .php
    文件中的
    s以不同的条目回送到一个数组中。第二次(刚才),它更简单:我必须删除
    .php
    文件顶部的注释(文件开始时是这样的:
    )。所以这就是
    对我仍然不起作用的地方。马里奥的答案是什么,我找不到。我也遇到了同样的问题,所以将文件名改成了另一个名称,它起了作用。我的文件名没有大写字母。当我的脚本在子目录中时,我就遇到了这种情况
    
    <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>
    
    header("Location: route_to_main_page");
    
    <!doctype html>
        <html>
            <someTag />
            <AnotherTag />
        </html>
    
    <location path="js/resourcefile.js">
      <system.web>
        <authorization>
          <allow users="?" />
        </authorization>
      </system.web>
    </location>
    
    <?xml version="1.0" encoding="UTF-8"?>
     <configuration>
       <system.webServer>
        <handlers>
            <!-- <add name="iisnode" path="*.js" verb="*" modules="iisnode" /> -->
        </handlers>
      </system.webServer>
     </configuration>