2011-11-12 2 views
0

Je travaille sur jquery pour obtenir des données lier à la liste déroulante & aussi j'ai utilisé la méthode de service web, et c'est très bien, mais je ne reçois pas de clarification. une liste déroulante J'obtiens des données de la méthode web qui retourne les objets To Array et pour une autre dropdownlist j'obtiens des données de la méthode web qui retourne en termes d'objet JSON, mais au début je ne vois pas de différence. la plupart d'entre eux disant sérielle json bonne méthode pour travailler, alors qu'est-ce qui se passe réellement ici? Je confonds peu s'il vous plaît aidez-moi merciComprendre la différence entre ToArray et JSON

**here is my code** 
Default.aspx 

<html> 
<head runat="server"> 
    <title>JsonAndToArray</title> 

    <script type="text/javascript" src="js/jquery.min.js"></script> 

    <script type="text/javascript"> 

     $(document).ready(function() { 
      ddlActivityType = document.getElementById("<%=ddlActivity.ClientID %>"); 
      $.ajax({ 
       type: "POST", 
       contentType: "application/json;charset/utf-8", 
       url: "Visit.asmx/GetActivityByJSON", 
       dataType: "json", 
       success: function(results) { 
        results = eval(results.d); 
        $('#ddlActivity').get(0).options.length = 0; 
        $('#ddlActivity').get(0).options[0] = new Option(' --select-- ', '0'); 
        $.each(results, function(val, text) { 
         $('#ddlActivity').append($('<option></option>').val(text[1]).html(text[0])); 
        }); 
       } 
      }); 

      ddlActivityType1 = document.getElementById("<%=ddlActivity2.ClientID %>"); 
      $.ajax({ 
       type: "POST", 
       contentType: "application/json;charset/utf-8", 
       url: "Visit.asmx/GetActivity", 
       dataType: "json", 
       success: function(results) { 
        results = eval(results.d); 
        $('#ddlActivity2').get(0).options.length = 0; 
        $('#ddlActivity2').get(0).options[0] = new Option('--select--', '0'); 
        $.each(results, function(val, text) { 
         $('#ddlActivity2').append($('<option></option>').val(text[1]).html(text[0])); 
        }); 
       } 
      }); 
     }); 

    </script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
    Json-Activity : 
    <select id="ddlActivity" runat="server"> 
    </select> 
    <br /> 
    <br /> 
    ToArray-Activity : 
    <select id="ddlActivity2" runat="server"> 
    </select> 
    <br /> 
    <br /> 
    <asp:Button ID="btnJson" runat="server" Text="Json" OnClick="Json_click"/> 
    </form> 
</body> 
</html> 


Defalut.aspx.cs 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data; 
using System.Data.SqlClient; 
using System.Web.Script.Serialization; 

public partial class Defalut: System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void Json_click(object sender,EventArgs e) 
    { 
    } 
} 


**webservices** 

** 

- Visit.asmx 

** 


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Services; 
using System.Data; 
using System.Data.SqlClient; 
using System.Web.Script.Serialization; 
using Facade; 

/// <summary> 
/// Summary description for Visit 
/// </summary> 
[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
[System.Web.Script.Services.ScriptService] 
public class Visit : System.Web.Services.WebService 
{ 

    public Visit() 
    { 

     //Uncomment the following line if using designed components 
     //InitializeComponent(); 
    } 

    [WebMethod] 
    public string HelloWorld() 
    { 
     return "Hello World"; 
    } 

    [WebMethod] 
    public IList<string[]> GetActivity() 
    { 
     IList<string[]> values = new List<string[]>(); 
     //string value = ""; 
     try 
     { 
      SqlConnection con_New = new SqlConnection(@"Data Source=SQLEXPRESS;Initial Catalog="Database";Integrated Security=True;"); 
      con_New.Open(); 
      SqlCommand cmdSelect_ST = new SqlCommand("select id,name from table", con_New); 
      SqlDataAdapter da_ST = new SqlDataAdapter(cmdSelect_ST); 

      DataSet ds = new DataSet(); 
      da_ST.Fill(ds); 
      DataTable dt = ds.Tables[0]; 
      for (int i = 0; i < dt.Rows.Count; i++) 
      { 
       string[] ActivityType = new string[2]; 
       ActivityType[0] = dt.Rows[i]["name"].ToString(); 
       ActivityType[1] = dt.Rows[i]["id"].ToString(); 
       values.Add(ActivityType); 
      }   
     } 
     catch (Exception ex) 
     { 

     } 
     return values; 
    } 


    [WebMethod] 
    public string GetActivityByJSON() 
    { 
     IList<string[]> values = new List<string[]>(); 
     string value = ""; 
     try 
     { 
      SqlConnection con_New = new SqlConnection(@"Data Source=SQLEXPRESS;Initial Catalog="Database";Integrated Security=True;"); 
      con_New.Open(); 
      SqlCommand cmdSelect_ST = new SqlCommand("select name,id from table", con_New); 
      SqlDataAdapter da_ST = new SqlDataAdapter(cmdSelect_ST); 

      DataSet ds = new DataSet(); 
      da_ST.Fill(ds); 
      DataTable dt = ds.Tables[0]; 
      for (int i = 0; i < dt.Rows.Count; i++) 
      { 
       string[] ActivityType = new string[2]; 
       ActivityType[0] = dt.Rows[i]["name"].ToString(); 
       ActivityType[1] = dt.Rows[i]["id"].ToString(); 
       values.Add(ActivityType); 
      } 
      JavaScriptSerializer js = new JavaScriptSerializer(); 
      value = js.Serialize(values); 
     } 
     catch (Exception ex) 
     { 

     } 
     return value; 
    } 
} 

Répondre

0

Dans le premier appel, vous retournez un tableau qui est converti en un tableau JSON par le système. Vous revenez ceci:

IList<string[]> values = new List<string[]>(); 

Dans le deuxième appel vous passez à un tableau de jsaon et retour en tant que chaîne. Voici le code qui effectue la conversion:

JavaScriptSerializer js = new JavaScriptSerializer(); 
value = js.Serialize(values); 

Depuis JSON est juste une chaîne formatée d'une certaine manière - il n'y a pas de différence. Juste quand la chaîne à renvoyer est créée et qui (votre code ou le code système) la crée.

+0

alors il n'y a aucun besoin essentiel de faire json serialize et de renvoyer au front end et nous pouvons utiliser To Array à la place de cela, est-ce correct que j'ai compris? –

+0

umm ... en quelque sorte. Le système effectuera la sérialisation json pour vous. Le 'ToArray()' n'est pas à la place de quoi que ce soit. – Hogan

+0

oh ... comme ça, je vous remercie –

Questions connexes