Jquery 无效的json原语:将唯一标识符传递给asmx web方法
我终于让我的web方法在某种程度上正常工作了,但现在我正试图让它只返回json对象。我的javascript方法如下: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 = '<
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。