无效的json原语:将唯一标识符传递给asmx Web方法

时间:2013-04-11 18:37:03

标签: jquery asp.net ajax json

我终于让我的web方法有点工作,但现在我试图让它只返回json对象。我的javascript方法如下:

function PopulateRooms(e) {
           var idx = e.selectedIndex;
           var dcId = JSON.stringify('{ dataCenterId:' + e.options[idx].value + '}', null, 2);
           var pageUrl = '<%=ResolveUrl("~/WebService/AVWebService.asmx")%>';

           $.ajax({
               url: pageUrl + '/GetRooms',
               type: 'post',
               contentType: 'application/json; charset=utf-8',
               dataType: 'json',
               data: dcId,
               success: OnRoomsReceived,
               error: OnErrorCall
           });
       }

dcId是唯一标识符。我只针对新的浏览器,所以我读到我不需要另一个库,我只能使用JSON.stringify()方法。但是当我这样做时,我得到一个错误500:无法将类型为\ u0027 \ System.String \ u0027的对象转换为... IDictionary。

但是,如果我取出JSON.stringify(),我会得到一个无效的JSON原语错误。如何将ID传递给我的网络方法?

2 个答案:

答案 0 :(得分:0)

您正在尝试将js字符串转换为json,您想要的是将对象转换为json,

var dcId = JSON.stringify({ dataCenterId: e.options[idx].value });

答案 1 :(得分:0)

我不确定你是否需要stringify,因为$ .Ajax数据属性需要一个javascript对象:

var dcId = { dataCenterId: e.options[idx].value };