无效的JSON原语:columnName。 jQuery Ajax to WebMethod

时间:2014-01-13 19:14:18

标签: asp.net json jquery webmethod

我使用jQuery Ajax通过以下代码传递给ASP.NET WebMethod:

$.ajax({
   type: 'POST',
   url: 'Page.aspx/generateReport',
   data: {columnList:columnList, gridArrayList: JSON.stringify(gridArrayList) },
   contentType: 'application/json; charset=utf-8',
   dataType: 'json',
   async: true,
   cache: false,
 });

columnList 是一个单字符串变量, gridArrayList 是像

这样的对象的arrary
var gridArrayList = [{id:1,value:"val1"},{id:2,value:"value2"},{id:3,value:"value3"}]

WebMethod

public static void generateReport(string columnList, List<dataReportEpad> gridArray) 

我收到以下错误:

ExceptionType
"System.ArgumentException"

信息     &#34;无效的JSON原语:columnList。&#34;

栈跟踪     &#34; System.Web.Script.Serialization.JavaScript上的System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()处于System.Web.Script.Serialization.JavaScript上的System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32深度).SvaricDeserialize(String输入序列化器)

任何人都可以帮助我?

2 个答案:

答案 0 :(得分:0)

你发送的不是json它的url编码形式数据,发送json你必须传递一个json字符串作为数据。

data: JSON.stringify({columnList:columnList, gridArray: gridArrayList }),

答案 1 :(得分:0)

也许你可以尝试这样的事情:

使用Javascript:

var obj = { 'columnList': columnList, 'gridArrayList': gridArrayList };
//where columnList is a string and gridArrayList is an array of objects

$.ajax({
   type: 'POST',
   url: 'Page.aspx/generateReport',
   data: JSON.stringify(obj),
   contentType: 'application/json; charset=utf-8',
   dataType: 'json',
   async: true,
   cache: false,
 });

代码背后:

[WebMethod()]
public static string generateReport(string columnList, ArrayList gridArrayList) {