Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Santhosh 58 posts 99 karma points
    Mar 16, 2011 @ 07:38
    Santhosh
    0

    Umbraco: /base method call should return an custom created object. But on my callback, I get an xmlDocument Object.

    Hi,

    I use /base call to call an web services. I dont have .asmx exposed with me. I have the wsdl file only. Hence I cannot use Jquery to call the .asmx method.

    hence i go for /base in umbraco. I coded the web service call in my dll. and kept inside /bin of umbraco. And I configured the restExtensions to enable the method to access. Also I could access the method in the base, using javascript as follows.

    $.get("/base/BLogic/Hello/" + sequence + "/" + optimization + "/" + motifs + ".aspx",
       function (data) {

           alert("Call Succ");

           alert(data);

    });
       });

     

    Here "Hello" is the base method name, which takes 3 parameters (Sequence, optimization, motifs), which I could pass. But the return value "data" is an custom object which is returned by the base method. I need to read the "data" and get my values back in javascript. But I get an "object xmlDocument", when i alert "data". Can anyone tell me how to read the values in "data".??

    And this is my base method:

    public static mgxOptimizationResult Hello(string sequence, string codonusageId, string motifs )
            {
                string[] motifs1 = new string[1];

                motifs1[0] = motifs;

    //webservice proxy object creation

               GENEius.MGXServiceClient obj = new MGXServiceClient();


    //call to the webservice method

               GENEius.mgxOptimizationResult result = obj.optimizeSequence(sequence, codonusageId, motifs1);


    //returning the result, which is an custom object...

               return result;
            }

     

    Any help would be highly appreciated. If any doubts on the above issue, please feel free to ask.

  • Calvin Frei 106 posts 314 karma points
    Mar 16, 2011 @ 09:22
    Calvin Frei
    0

    I think you must return a serialized object (to get a JSON Object)

    public static String Hello(string sequence, string codonusageId, string motifs)
    {
       ....

       return new JavaScriptSerializer().Serialize(result);
    }

  • Santhosh 58 posts 99 karma points
    Mar 16, 2011 @ 09:32
    Santhosh
    0

    Ok, But can i Serialize the "result" object which is of type "mgxOptimizationResult"??

    //call to the webservice method

               GENEius.mgxOptimizationResult result = obj.optimizeSequence(sequence, codonusageId, motifs1);

     

    And even if i serialize the "result", Can you please tell me how do i get the results back in my JQuery here below?

    $.get("/base/BLogic/Hello/" + sequence + "/" + optimization + "/" + motifs + ".aspx",
       function (result) {

           alert("Call Succ");

           alert(result);

    //Please tell me How to read/parse the json object here ??

    });
       });

    My "result" would look like this:

    optimizedSequenceOK : Bool (type)

    optimizedSequence: String (type)

    codonfreqComparisons: MGXcodonfreqcomparisons[]

    Where MGXcodonfreqcomparisons would incude:

    codon: string

    freqOptimal: double

    freqBefore: double

    freqAfter: double

     

  • Calvin Frei 106 posts 314 karma points
    Mar 16, 2011 @ 12:10
    Calvin Frei
    0

    Yes you can serialize your object mgxOptimizationResult if it look like this (but I did't test this):

    [Serializable]
    public class mgxOptimizationResult
    {
        public Boolean optimizedSequenceOK;
        public String optimizedSequence;
        ....
    }

    public class MGXServiceClient
    {
        public mgxOptimizationResult optimizeSequence(String sequenze, ...)
        {
                  mgxOptimizationResult mgr = new mgxOptimizationResult();
                  mgr.optimizedSequence = sequenze;
                  ......
                  return mgr;
        }
    }

    To get the correct json object you can try this:

    $.ajax({
        type: 'POST',
        url: "/base/BLogic/Hello/" + sequence + "/" + optimization + "/" + motifs + ".aspx",
        dataType: 'json',
        contentType: 'application/x-www-form-urlencoded; charset=utf-8',
        success: function (result) {
           alert("Call Succ");
           alert(result);
        }
    });

    And your restExtensions.config should look like this:

    <ext assembly="yourassembly" type="yourtype" alias="youralias">
      <permission method="Hello" returnXml="false" allowAll="true" />
    </ext>

  • Santhosh 58 posts 99 karma points
    Mar 17, 2011 @ 09:38
    Santhosh
    0

    Yes, Calvin

    "mgxOptimizationResult" object is part of teh webservices. I create a object of type "mgxOptimizationResult" and get the result of the web service method call, into this object as shown here.

    mgxOptimizationResult result = obj.optimizeSequence(sequence, codonusageId, motifs);

    And I'm sure "mgxOptimizationResult" class is serialized as it is part of a web service. I added the web reference to this web service and I have the below in my reference.cs class

        [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]
        [System.SerializableAttribute()]
        [System.Diagnostics.DebuggerStepThroughAttribute()]
        [System.ComponentModel.DesignerCategoryAttribute("code")]
        [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://webserviceSOAP/")]
        public partial class mgxOptimizationResult {

           
            private mgxCodonFreqComparison[] codonFreqComparisonsField;
           
            private string optimizedSequenceField;
           
            private bool optimizedSequenceOKField;

           
            /// <remarks/>
            [System.Xml.Serialization.XmlElementAttribute("codonFreqComparisons", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true)]
            public mgxCodonFreqComparison[] codonFreqComparisons {
                get {
                    return this.codonFreqComparisonsField;
                }
                set {
                    this.codonFreqComparisonsField = value;
                }
            }

           
            /// <remarks/>
            [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
            public string optimizedSequence {
                get {
                    return this.optimizedSequenceField;
                }
                set {
                    this.optimizedSequenceField = value;
                }
            }

           
            /// <remarks/>
            [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
            public bool optimizedSequenceOK {
                get {
                    return this.optimizedSequenceOKField;
                }
                set {
                    this.optimizedSequenceOKField = value;
                }
            }

        }

    Anyway i will try the above steps mentioned by you and update you if any success. thanks for you reply. And I hope i could solve this problem.

  • Santhosh 58 posts 99 karma points
    Mar 17, 2011 @ 09:47
    Santhosh
    0

    I'm adding further information here for your understanding...

    My "Hello" method (or) base method looks like this

    namespace BLogicLibrary
    {
        public class BLogic
        {

            public static string Hello(string sequence, string codonusageId, string motifs )
            {
                System.Web.Script.Serialization.JavaScriptSerializer jSerializer = new JavaScriptSerializer();
                string[] motifs1 = new string[1];
                motifs1[0] = motifs;

               //proxy object creation for the web service

                MGXServiceClient obj = new MGXServiceClient();

                //Method call and storing into the result object (mgxOptimizationResult)
                mgxOptimizationResult result = obj.optimizeSequence(sequence, codonusageId, motifs1);  
                return jSerializer.Serialize(result);
            }

    }

    }

    The result object (mgxOptimizationResult) from the Hello method would be serialized to "json", and sent to the callback method @ Ajax. the mgxoptimization class looks like the below:

    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]
        [System.SerializableAttribute()]
        [System.Diagnostics.DebuggerStepThroughAttribute()]
        [System.ComponentModel.DesignerCategoryAttribute("code")]
        [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://webserviceSOAP/")]
        public partial class mgxOptimizationResult {

           
            private mgxCodonFreqComparison[] codonFreqComparisonsField;
           
            private string optimizedSequenceField;
           
            private bool optimizedSequenceOKField;

           
            /// <remarks/>
            [System.Xml.Serialization.XmlElementAttribute("codonFreqComparisons", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true)]
            public mgxCodonFreqComparison[] codonFreqComparisons {
                get {
                    return this.codonFreqComparisonsField;
                }
                set {
                    this.codonFreqComparisonsField = value;
                }
            }

           
            /// <remarks/>
            [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
            public string optimizedSequence {
                get {
                    return this.optimizedSequenceField;
                }
                set {
                    this.optimizedSequenceField = value;
                }
            }

           
            /// <remarks/>
            [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
            public bool optimizedSequenceOK {
                get {
                    return this.optimizedSequenceOKField;
                }
                set {
                    this.optimizedSequenceOKField = value;
                }
            }

        }

    Anyway i will try the above steps mentioned by you and update you if any success. thanks for you reply. And I hope i could solve this problem.

    My Ajax call looks like below:
    $.ajax({
        type: 'POST',
        url: "/base/BLogic/Hello/" + sequence + "/" + optimization + "/" + motifs + ".aspx",
        dataType: 'json',
        contentType: 'application/x-www-form-urlencoded; charset=utf-8',
        success: function (result) {
           alert("Call Succ");
           alert(result);
        }
    });


  • Santhosh 58 posts 99 karma points
    Mar 17, 2011 @ 10:02
    Santhosh
    0

    my restExtension file looks like below

      <ext assembly="/BLogicLibrary" type="BLogicLibrary.BLogic" alias="BLogic">
        <permission method="Hello" allowAll="true"  returnXml="false"/>
        <permission method="PersistValuesOfGeneDefinition" allowAll="true" returnXml="true" />
        <permission method="CallToGENEius" allowAll="true" returnXml="false"/>
        <permission method="matchResourceKeyWithList" allowAll="true" returnXml="false"/>
      </ext>

Please Sign in or register to post replies

Write your reply to:

Draft