JSON SyntaxError:意外的令牌<

时间:2015-01-16 12:43:46

标签: javascript ajax json

以前曾经问过,但没有其他答案可行或适用于这种情况。我将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)的输出。

3 个答案:

答案 0 :(得分:0)

请求返回一些无效的数据json。存在'&lt;'表示html或xml。如果发生内部错误,它可能是服务器默认错误页面。

您可以在大多数浏览器中检查请求返回数据。在Chrome中,它是F12,然后是“网络”选项卡。

答案 1 :(得分:0)

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

dataType设为htmltext

答案 2 :(得分:0)

错误表明响应是html。所以,只需删除dataType: 'json',jQuery就应该将其解析为html,它应该可以正常工作。

请遵循以下

如果您真的对json做出回应,那么很有可能将其格式化为

<pre>{json here}</pre>

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

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