通过Newtonsoft.Json.JsonConvert.SerializeObject(dt,new Newtonsoft.Json.Converters.DataTableConverter());转化后的json格式在asmx中打开格式如下:[{"id":7,"KeyWords":"B000YDDF6O","LastSearch":"\/Date(1304847394300+0800)\/","UserName":"demo","ItemTitle":"undefined","Locale":"en-US"},{"id":6,"KeyWords":"undefined","LastSearch":"\/Date(1304846962143+0800)\/","UserName":"demo","ItemTitle":"undefined","Locale":"en-US"},{"id":4,"KeyWords":"B000YDDF6O","LastSearch":"\/Date(1304314798600+0800)\/","UserName":"demo","ItemTitle":"undefined","Locale":"en-US"},{"id":5,"KeyWords":"undefined","LastSearch":"\/Date(1304314705570+0800)\/","UserName":"demo","ItemTitle":"undefined","Locale":"en-US"}]错误提示:uncaught exception: Syntax error, unrecognized expression: [{"id":7,"KeyWords":"B000YDDF6O",后面省略.....调用的方式:$.ajax({
      type: "POST",
      url: 
      contentType: "application/json; charset=utf-8",
       
      data: ,
      dataType: "json",
      cache:false ,
      success: successFn,
      error: errorFn
如果将datatable转换为List泛型再json传输就可以!   请教达人! 谢谢

解决方案 »

  1.   

    最外层再套一个Key试试!{"root": [……]}
      

  2.   

    传datatable  搞这么吓人干嘛
      

  3.   


    datatable 从数据库中取的,现在想利用WebService以json格式传递显示
      

  4.   

    你把dataType: "json",去掉试试
      

  5.   

    en ,可以下楼上的方法,去掉dataType:"json"
      

  6.   

    很奇怪,如果把这句注释掉,不错误提示了,firebug中查看的json和直接运行asmx查看的字符串格式一样,但是不显示结果(这种读取方式$(this).find("username").text()),并且用List类型的话 现在却不能正确解析了?|
      

  7.   

    asmx中的格式应该是一个json的数组而不是单纯的json格式,所以你加这个dataType会报错
    不加的话返回的就是纯文本字符串,需要你自己进行解析了
      

  8.   

    接收后用 eval 包裹一下就可以了而且你要注意 \ 这个转义符
      

  9.   

    ServletActionContext.getResponse().setContentType("application/json;charset=UTF-8");服务器端没搞好响应格式吧