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

Jquery 无效的json原语:将唯一标识符传递给asmx web方法,jquery,asp.net,ajax,json,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 = '<

我终于让我的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
           });
       }
函数PopulateRooms(e){
var idx=e.选择的指数;
var dcId=JSON.stringify('{dataCenterId:'+e.options[idx].value+'}',null,2);
var pageUrl='';
$.ajax({
url:pageUrl+'/GetRooms',
键入:“post”,
contentType:'application/json;charset=utf-8',
数据类型:“json”,
数据:dcId,
成功:OnRoomsReceived,
错误:OnErrorCall
});
}
dcId是唯一的标识符。我只针对新的浏览器,所以我读到我不需要另一个库,我可以使用JSON.stringify()方法。但当我这样做时,我得到一个错误500:无法将类型为\u0027\System.String\u0027的对象转换为类型…IDictionary


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

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

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

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

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

我尝试了其他建议,它们导致了无效的JSON原语。这起作用了。要发送json,jQuery.ajax会将对象转换为url编码的数据,而不是json。因此,如果要发送json,必须传递json。