2016-04-24 67 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谢谢!...我曾计划返回像{描述:“发生了错误”} ..你有电子邮件吗? –