Ajax post调用返回parsererror

时间:2016-11-03 04:30:40

标签: javascript ajax reactjs

我提交了如下所述的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?如何解决这个问题?

3 个答案:

答案 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的投入