JSON SyntaxError: Unexpected token <

JSON SyntaxError: Unexpected token <

之前有人问过这个问题,但没有其他答案有效或适用于这种情况。我有 JSON 数据发送到后端,然后发送回复。

然而,它永远不会触发调用的成功函数,尽管数据通过服务器并且后端进程成功。我似乎找不到问题。

我乱七八糟的功能:

RegistrationForm.prototype.sendCode = function(url, error) {

    if (accessCode){
      return $.ajax({
        url: url,
        type: 'POST',
        data: JSON.stringify({"vouchercode": accessCode}),
        dataType: 'json',
        contentType: "application/json; charset=utf-8",
        success: function(data){
          //success case here. never fires
        },
        error: function(xhr, ajaxOptions, err, error){
            console.log(err);
            console.log(accessCode);
        }
      });
 }

错误:

 SyntaxError: Unexpected token <

这是 AJAX 错误函数中 console.log(err) 的输出。

请求 return 一些无效数据 json。 “<”的存在表示 html 或 xml。如果发生内部错误,它可能是服务器默认错误页面。

您可以在大多数浏览器中检查请求 return 数据。在 chrome 中是 F12,然后是 "Network" 选项卡。

dataType 是您期望 从服务器返回的内容。你告诉 jQuery,服务器将发送 JSON,但显然它发送 HTML (<!DOCTYPE...),因此错误。

dataType 设置为 htmltext

错误表明响应在 html 中。因此,只需删除 dataType: 'json' 并且 jQuery 应该将其解析为 html 并且它应该可以正常工作。

否则按照下面

如果你真的用 json 回复,那么它很可能被格式化为

<pre>{json here}</pre>

因此,删除 dataType: 'json' 并在成功处理程序中进行以下更改

success: function(data){
   var obj = JSON.parse($(data).text());
}