【问题标题】:jqGrid Invalid JSON primitive when trying to use saveRow()尝试使用 saveRow() 时 jqGrid 无效的 JSON 原语
【发布时间】:2011-09-12 08:10:27
【问题描述】:

我们正在使用 ASP.NET Webforms 和 jqGrid。我从我们的网络服务检索数据到网格没有问题。但是,当尝试使用 saveRow 时,我们会遇到异常。我认为这是由于无效的 json,但使用内置的 saveRow() 我会猜到网格会使它成为有效的 json。使用 fiddler2,调用使用 "application/json; charset=utf-8"

调用 saveRow:

$("#SupplierSettingTable").jqGrid('saveRow', rowNumber, true, '<%= ResolveClientUrl("~/Services/SupplierSettingService.asmx/SetSupplierSettingItem")%>' );

这是一个例外:

{"Message":"Invalid JSON primitive: AccountGroupName.","StackTrace":" at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\r\n at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)\r\n at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input)\r\n at System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext context, JavaScriptSerializer serializer)\r\n at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"}

帮助感谢...

【问题讨论】:

    标签: asp.net json webforms jqgrid


    【解决方案1】:

    你应该验证你使用了

    ajaxRowOptions: { contentType: "application/json" }
    

    serializeRowData: function (data) { return JSON.stringify(data); }
    

    jqGrid 参数。有关详细信息,请参阅 thisthis 答案。

    如果它没有帮助,您应该在问题中包含将发送到服务器的确切数据和响应。您将获得关于FiddlerFirebug 的信息。

    【讨论】:

    • 谢谢,我们的网格中缺少“serializeRowData: function (data) { return return JSON.stringify(data); }”。
    • 我有点快。虽然错误消失了,但数据现在永远不会传递到服务器端。知道为什么会这样吗?但是,如果我在 serializeRowData 中对 JSON.stringify(data) 发出警报,它会输出正确的值。
    • @Lars: 你能在 Firebug 的 Fiddler 中检查将发送到服务器的数据吗?究竟将发送什么数据以及哪个原型具有后端 Web 方法?你设置了webmethod的所有参数吗?所有参数必须至少设置为null
    • @Oleg:发送的唯一内容是:{"d":""},在您的原始答案中,您有 2 个退货,我认为这是一个错误,我删除了其中一个。 Webmethod 完全为空,暂时没有参数。
    • @Lars:谢谢,我删除了第二次退货。来自服务器的答案{"d":""} 是正确的,但是在请求中向服务器发送了什么?答案{"d":""} 间接表明调用了 Web 方法并返回一个空结果。是使用 jqGrid 的 editurl 参数还是使用主要的 url 完成所有工作?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多