意外的数据结束= JSON.parse(errorThrown.responseText);

时间:2013-10-16 16:09:26

标签: jquery

我有以下脚本。如果出错,它会通过显示我测试过的模态而起作用。成功时,它应显示一个警告框,但我收到消息:

SyntaxError: JSON.parse: unexpected end of data

以下是抛出错误的行:

data = JSON.parse(errorThrown.responseText);

但是,它不应该成功运行吗?

有人可以看看吗?

页面会在成功时返回201 CREATED

$.ajax({
        url: '/accounts/create/',
        type: 'POST',
        dataType: "json",
    },
    data: $('#registration').serialize(),
    success: function () {
        console.log('success');
        alert("test")
    },
    error: function (errorThrown) {
        data = JSON.parse(errorThrown.responseText);
        $('#account-error').modal("show");
        $('#error-text').html(data.error);
        console.log(errorThrown);
    }
});

2 个答案:

答案 0 :(得分:4)

问题在于dataType。错误将是json,但看起来你的成功dataType不是。这意味着它会再次触发“错误”功能。只需删除dataType,看看会发生什么。

答案 1 :(得分:0)

您尝试解析的数据为JSON不是JSON formatted

您可以使用

if(typeof jQuery.parseJSON(errorThrown.responseText)==="object")

检测响应文本是否采用有效的JSON格式!

希望这有帮助!

修改

您可能想尝试使用jQuery.post()

var ajaxRequest = jQuery.post("/accounts/create/", $('#registration').serialize(), function() {
  //On success
})
  .fail(function(errorThrown) {
    data = errorThrown.responseText;
    $('#account-error').modal("show");
    $('#error-text').html(data.error);
    console.log(errorThrown);
  });

您正在尝试JSON解析Javascript对象,当您在ajax请求中指定dataType时,响应已经从Json转换为Javascript对象。