$ .ajax()返回语法错误:json输入的意外结束

时间:2017-04-12 18:49:53

标签: javascript jquery json ajax

所以我在一个我必须实现聊天的网站上工作,目前整个事情都在localhost上运行。 我收到此错误:

  

SyntaxError:JSON输入的意外结束

并且无法弄清楚原因。我用谷歌搜索了一下,但无法找到答案,这确实有效。实际上我昨天在另一台计算机上做了这个并且工作得很好,但今天它不会工作,我无法弄清楚原因。

谢谢你的答案。

$(function() {
    updateChat("updateChat", null);

    $(".chat-form").submit(function(event) {
        event.preventDefault();
        if ($(".chat-form input").val() != "") {
            updateChat("sendMessage", $(".chat-form input").val());
        }
    });

    setInterval(function() {
        updateChat("updateChat", null);
    }, 3000);

    function updateChat(method, message) {
        $.ajax({
            type: "POST",
            url: "action/chat.php",
            data: {
                function: method,
                message: message
            },
            dataType: "json",
            success: function(data) {
                console.log(data);
            },
            error: function (request, status, error) {
                console.log(error);
            }
        })
    }
})

4 个答案:

答案 0 :(得分:2)

很可能在您的PHP代码中显示错误或警告,并且因为您只期望json,这会导致语法错误。

有几种方法可以找出正在发生的事情:

  • 在浏览器中打开开发者控制台,查看网络选项卡的响应
  • 检查您的PHP错误日志
  • 暂时将您的dataType更改为html,您会看到console.log(data)

答案 1 :(得分:1)

由于后端php函数未返回应有的响应,因此出现此错误。它什么也没返回。我应该返回响应的父函数正在调用一个WAS返回响应的子函数,但是父函数没有将那个子返回传递给ajax调用。

答案 2 :(得分:-1)

这些类型错误的另一个可能的罪魁祸首可能是后端(服务器端)脚本中不正确的 python “shebang”。

在我的特殊情况下,我通过 Apache Web 服务器对 python cgi 脚本进行了 ajax 调用,但在前端调试工具中找不到更具描述性的错误消息。但是,Apache 日志表明后端脚本在导入其中一个 python 脚本时出现问题,因为解释器无法识别它。在检查了该后端脚本的“shebang”之后,它确实指定了错误的解释器,因为我刚刚复制了一个模板文件而忘记修改它..

因此,请检查脚本顶部的“shebang”以确保它指向正确的解释器。例子: enter image description here

答案 3 :(得分:-1)

对于 MVC 控制器,您必须返回一个有效的 JsON

return new JsonResult() { Data = new { test = 123 } };

代替

return new JsonResult();