我有以下脚本。如果出错,它会通过显示我测试过的模态而起作用。成功时,它应显示一个警告框,但我收到消息:
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);
}
});
答案 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对象。