2016-11-03 91 views
0

我提交如下所述的reactjs形成,後的Ajax調用返回parsererror

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) 
    }) 
    } 

以上阿賈克斯後會調用相應的網絡API POST方法,其中得到的數據成功插入到數據庫。

其職位數據後,程序不返回成功的函數,而是調用錯誤功能和記錄錯誤

parsererror SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data

當我檢查了xhr.status,該值是201和statustext已創建。

爲什麼上面的ajax post調用返回parsererror?如何解決這個問題?

+2

'/ API/Accounts'沒有返回有效的JSON –

+0

我應該刪除的數據類型:從上面的代碼「JSON」? – MemoryLeak

+0

你期望JSON嗎? 'console.log(xhr.responseText)'或者查看網絡面板中的請求以查看返回的內容。 – epascarello

回答

0

問題是在ajax調用中提到的dataType。

post方法不會返回任何json數據, 通過將dataType:'json'更改爲dataType:'text'來解決問題。

感謝Jaromanda X和馬修積斌爲您輸入

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) 
    }) 
    } 
0

只是一個建議, 如果你想從控制器返回JSON你可以從控制器通過自定義消息,如保存成功,保持相同的Ajax代碼

success: function(data, status, xhr) {    
     console.log(data.ResponseText); 
     } 

控制器: 基於條件

 return Json(new { success = true, 
ResponseText = "saved successfully" }, JsonRequestBehavior.AllowGet);