现在的位置: 首页 > 综合 > 正文

json数据交换的例了

2012年01月05日 ⁄ 综合 ⁄ 共 1918字 ⁄ 字号 评论关闭
我打算在我的个人网站中,取消传统的xml与前台传递数据。改用json数据格式
这是我前台的一部分:
  var option={
        parameters:
"",
        method:
"get",
        onSuccess:
function(transport){
             rp
=transport.responseText;

            var json=eval('(' +rp+ ')');

    for(var i=0;i<json.DataTable.length;i++)
    {
        taskMenu2.add(
new TaskMenuItem(json.DataTable[i].lifecol,"Image/friends.gif","parent.window.frames[1].location.href='Redirect.aspx?id="+json.DataTable[i].id+"'"));
       
    }
    

        },
        onFailure:function(transport){
            alert(transport.responseText
+"数据提交失败,请检查网络或重试。");
        }
    };
var request=new Ajax.Request("ajax.aspx",option);

这里的taskMenu2这个是我自已定义的javascript类。不用去管它:

下面是。ajax.aspx.cs页面

    if (!this.IsPostBack)
        { 
                SqlDataReader sdr
=SqlHelper.ExecuteReader(CommandType.Text,"select * from readlife",null);
        
              DataTable dt 
= DB.ConvertDataReaderToDataTable(sdr);

              Response.Write(DB.DataTableToJSON(dt));
              
        
        }

这里用到了一个方法:
在DB类中有一个静态方法:

 public static string DataTableToJSON(DataTable dt)
    
{

        StringBuilder jsonBuilder 
= new StringBuilder();
        jsonBuilder.Append(
"{\"");
        jsonBuilder.Append(dt.TableName);
        jsonBuilder.Append(
"\":[");
        for (int i = 0; i < dt.Rows.Count; i++)
        
{
            jsonBuilder.Append(
"{");
            
for (int j = 0; j < dt.Columns.Count; j++)
            
{
                jsonBuilder.Append(
"\"");
                jsonBuilder.Append(dt.Columns[j].ColumnName);
                jsonBuilder.Append(
"\":\"");
                jsonBuilder.Append(dt.Rows[i][j].ToString());
                jsonBuilder.Append(
"\",");
            }

            jsonBuilder.Remove(jsonBuilder.Length 
- 11);
            jsonBuilder.Append(
"},");
        }

        jsonBuilder.Remove(jsonBuilder.Length 
- 11);
        jsonBuilder.Append(
"]");
        jsonBuilder.Append(
"}");
        
return jsonBuilder.ToString();

    }

抱歉!评论已关闭.