2016-04-24 100 views
0

我不知道爲什麼我得到解析錯誤。我在我的ajax上動態設置dataType,當我用json作爲dataType調用它時,我得到一個解析錯誤。在我的ajax結果返回parseerror

MVC控制器動作

public ProductViewModel UpdateProduct(ProductViewModel product) 
    { 
     var productContract = Mapper.Map<ProductViewModel, ProductContract>(product); 
     var productReturned = _productService.UpdateProduct(productContract); 

     if (productReturned.HasValue) 
     { 
      return Mapper.Map<ProductContract, ProductViewModel>(productReturned.Value); 
     } 
     return null; 
    } 

Ajax調用

var ajaxCall = function (destinationUrl, dataToPost, ajaxDataType, element, callbackFunction) { 
    $.ajax({ 
     url: destinationUrl, 
     data: dataToPost, 
     contentType: "application/json", 
     dataType: ajaxDataType, 
     success: function (data) { 
      callbackFunction(data, element); 
     }, 
     error: function (req, status, errorObj) { 
      console.log(status); 
     } 
    }); 
} 

callbackFunction參數

這是Ajax的成功運行的方法,我的數據庫是更新成功但我需要t他返回的數據更新了UI。我曾試圖得到它像datadata.ddata.d[0]

function updateProductRow(data, element) { 
    console.log(data.d[0]); 
} 
+0

您是否在開發人員工具中檢查返回數據? –

+0

@KarthikMR這就是爲什麼我記錄返回的數據,它的parseerror –

+1

這意味着你沒有返回有效的JSON。返回null肯定會導致這種情況。我不熟悉在其他返回情況下的代碼,生產json嗎?它看起來不像 – DelightedD0D

回答

0

我想通了,在與控制器動作ASP.NET MVC應用程序的情況下,我必須有我上面的方法來接受動詞的屬性這將是一個職位。並且還將返回類型轉換爲JSON結果。

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult UpdateProduct(ProductViewModel product) 
    { 
     var productContract = Mapper.Map<ProductViewModel, ProductContract>(product); 
     var productReturned = _productService.UpdateProduct(productContract); 

     if (productReturned.HasValue) 
     { 
      return Json(Mapper.Map<ProductContract, ProductViewModel>(productReturned.Value)); 
     } 
     return null; 
    } 
+0

作爲一種觀察,您有'return null;'的地方,您可能會考慮使用有意義的錯誤消息而不是null返回有效的JSON響應。目前,如果你遇到'return null;'你會得到同樣的解析錯誤。如果返回有意義的錯誤消息,則會更加優雅,並將幫助您提供更好的UX整體。只是我的兩美分雖然:) – DelightedD0D

+0

@ DelightedD0D謝謝!...我曾計劃返回像{描述:「發生了錯誤」} ..你有電子郵件嗎? –