我提交了如下所述的reactjs表单,
submit(){
if(this.checkRequiredField()){
$.ajax({
url: '/api/Accounts',
dataType: 'json',
type: 'POST',
data: {
Name: this.state.name,
StartDate :this.state.startDate,
EndDate : this.state.endDate,
UserCount: this.state.userCount
},
success: function(data, status, xhr) {
console.log('data added successfully');
}.bind(this),
error: function(xhr, status, err) {
console.error(status, err.toString());
}.bind(this)
})
}
上面的ajax帖子将调用相应的Web Api post方法,其中数据已成功插入数据库。
发布数据后,程序不会返回成功函数,而是调用错误函数并记录错误
parsererror SyntaxError:JSON.parse:第1行意外的数据结尾 JSON数据的第1列
当我检查xhr.status时,值为201,statustext为Created。
为什么上面的ajax post调用会返回parsererror?如何解决这个问题?
答案 0 :(得分:0)
如果您不希望返回JSON格式,则可能需要将其删除。
submit(){
if(this.checkRequiredField()){
$.ajax({
url: '/api/Accounts',
type: 'POST',
data: {
Name: this.state.name,
StartDate :this.state.startDate,
EndDate : this.state.endDate,
UserCount: this.state.userCount
},
success: function(data, status, xhr) {
console.log('data added successfully');
}.bind(this),
error: function(xhr, status, err) {
console.error(status, err.toString());
}.bind(this)
})
}
答案 1 :(得分:0)
只是一个建议, 如果你想从控制器返回一个json,你可以从控制器传递一个自定义消息,比如保存成功,保持相同的ajax代码
success: function(data, status, xhr) {
console.log(data.ResponseText );
}
控制器: 根据条件
return Json(new { success = true,
ResponseText = "saved successfully" }, JsonRequestBehavior.AllowGet);
答案 2 :(得分:0)
问题在于ajax调用中提到的dataType。
post方法没有返回任何json数据, 通过将dataType:'json'更改为dataType:'text'解决了问题。
感谢Jaromanda X和Mathew Jibin的投入