Loading Handsontable from an AJAX-enabled WCF Service

匿名 (未验证) 提交于 2019-12-03 01:33:01

问题:

I'm trying to display data in a Handsontable from an AJAX-enabled WCF Service but it does not show anything.

CarsService.svc:      [DataContract]     public class Car     {         [DataMember]         public string Name { get; set; }          [DataMember]         public string Year { get; set; }     }      [ServiceContract(Namespace = "")]     [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]     public class CarsService     {         [OperationContract]         [WebGet(ResponseFormat = WebMessageFormat.Json)]         public IEnumerable<Car> GetCars()         {             var cars = new List<Car>();             var car1 = new Car()             {                 Name = "Kia",                 Year = "2008"             };             var car2 = new Car()             {                 Name = "Nissan",                 Year = "2009"             };             cars.Add(car1);             cars.Add(car2);             return cars;         }     }  WebPage:  <head runat="server">     <title></title>     <script type='text/javascript' src='/Scripts/jquery-1.8.3.js'></script>     <script type='text/javascript' src="/Scripts/Handsontable/jquery.handsontable.js"></script>     <script type='text/javascript' src="/Scripts/Handsontable/bootstrap-typeahead.js"></script>     <script type='text/javascript' src="/Scripts/jquery.contextMenu.js"></script>     <script type='text/javascript' src="/Scripts/jquery.ui.position.js"></script>     <link rel="stylesheet" type="text/css" href="/Styles/jquery.contextMenu.css"/>     <link rel="stylesheet" type="text/css" href="/Styles/Handsontable/jquery.handsontable.css"/> </head> <body>     <form id="form1" runat="server">         <script type='text/javascript'>          $(window).load(function () {              $.ajax({                 url: "/CarsService.svc/GetCars",                 type: "GET",                 dataType: "json"             })             .success(function (result) {                 $("#exampleGrid").handsontable("loadData", result);             })             .fail(function (r, o) {                 alert("Failed : " + r.responseText);             });         });         </script>           <div id="exampleGrid" class="dataTable"></div>     </form> </body> 

回答1:

The following is working for me:

I use newtonsoft's Json.net: http://json.codeplex.com/

The contract for the service:

[WebInvoke(Method = "GET")] [OperationContract] string GetAllData(); 

the wcf service returns:

return JsonConvert.SerializeObject(data); 

and the javascript... ('data' is what is returned by my Ajax call)

var myData = JSON.parse(data.d);  var config = {     data: myData,     columns: [         //I had to set 'data' of each column         { data: "OtherParty" },         { data: "Reference" }     ] };  $container.handsontable(config); 

I hope this is helpful



回答2:

EncryptionUtils

import java.security.Security; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEParameterSpec; import sun.misc.BASE64Decoder;  public class EncryptionUtils {   private Cipher decryptCipher;   private BASE64Decoder decoder = new BASE64Decoder();    public EncryptionUtils() throws SecurityException {     Security.addProvider(new com.sun.crypto.provider.SunJCE());      char[] pass = "edurixkey".toCharArray();     byte[] salt = {       -93, 33, 36, 44,        -14, -46, 62, 25 };      int iterations = 3;      init(pass, salt, iterations);   }    public void init(char[] pass, byte[] salt, int iterations) throws SecurityException {     try {       PBEParameterSpec ps = new PBEParameterSpec(salt, 20);       SecretKeyFactory kf = SecretKeyFactory.getInstance("PBEWithMD5AndDES");       SecretKey k = kf.generateSecret(new javax.crypto.spec.PBEKeySpec(pass));        decryptCipher = Cipher.getInstance("PBEWithMD5AndDES/CBC/PKCS5Padding");       decryptCipher.init(2, k, ps);     }     catch (Exception e) {       throw new SecurityException("Could not initialize Encryption: " + e.getMessage());     }   }    public synchronized String decrypt(String str) throws SecurityException {     try {       byte[] dec = decoder.decodeBuffer(str);       byte[] utf8 = decryptCipher.doFinal(dec);       return new String(utf8, "UTF8");     }     catch (Exception e) {       throw new SecurityException("Could not decrypt: " + e.getMessage());     }   } }    


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!