代码之家  ›  专栏  ›  技术社区  ›  GrantU

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

  •  1
  • GrantU  · 技术社区  · 11 年前

    我有以下脚本。在出现错误时,它通过显示一个模态来工作。我已经测试过了,它也能工作。成功后,它应该显示一个警告框,但我得到的信息是:

    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 回复  |  直到 11 年前
        1
  •  4
  •   Glyn Jackson    11 年前

    问题出在dataType上。错误将是json,但看起来您的成功数据类型不是。这意味着它会再次触发“错误”功能。只需删除dataType,然后看看会发生什么。

        2
  •  0
  •   PhilTrep    11 年前

    您试图解析为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对象。