1

我终于让我的网络方法有点工作了,但现在我正试图让它只返回 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() 取出,我会收到 Invalid JSON primitive 错误。如何将 id 传递给我的 web 方法?

4

2 回答 2

0

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

var dcId = JSON.stringify({ dataCenterId: e.options[idx].value });
于 2013-04-11T18:41:47.407 回答
0

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

var dcId = { dataCenterId: e.options[idx].value };
于 2013-04-11T18:42:52.017 回答