2011-11-12 8 views
0

私はデータをドロップダウンリストにバインドするためにjqueryに取り組んでいます&また、私はWebサービスメソッドを使用していましたが、その作業は素晴らしいですが、私はバインディングデータを1つのドロップダウンリストWebメソッドからデータを取得しています。これはArrayオブジェクトに戻ります。別のドロップダウンリストでは、JSONオブジェクトに関して返されるWebメソッドからデータを取得していますが、フロントエンドでは何の違いもありません。それらのほとんどは、シリアル化されたjsonの作業方法を教えているので、ここで実際に何が起こるのですか?私は少し を混同してる はあなたがシステムによってJSON配列に変換される配列を返すされている最初の呼び出しでToArrayと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; 
    } 
} 

答えて

0

に感謝し、私を助けてください。あなたはjsaon配列に変換し、それを文字列として返す2回目の呼び出しで

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

:あなたはこれを返します。ここでは、変換を行うコードがある:JSONは、特定の方法でフォーマット単なる文字列であるので

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

- 違いはありません。返信する文字列が作成され、誰(あなたのコードまたはシステムコード)がそれを作成するときに。

+0

jsonをシリアライズしてフロントエンドに送り返す必要はなく、代わりにTo Arrayを使用することができます –

+0

umm ...並べ替え。システムはjsonをあなたのためにシリアライズします。 'ToArray()'は何かの代わりにありません。 – Hogan

+0

oh ...そうですね、ありがとうございます –

関連する問題