请问 下面代码
前段请求方式
"sAjaxSource": "GetTableData.ashx",
后端回应方式
public void ProcessRequest(HttpContext context)
{
string json = DataTableToJson(getJson());
context.Response.Write(json);
}
public static string DataTableToJson(DataTable dt)
{
StringBuilder json = new StringBuilder();
json.Append("{\"");
json.Append("aaData");
json.Append("\":[");
for (int i = 0; i < dt.Rows.Count; i++)
{
json.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
json.Append("\"");
json.Append(dt.Columns[j].ColumnName);
json.Append("\":\"");
json.Append(dt.Rows[i][j].ToString());
json.Append("\",");
}
json.Remove(json.Length - 1, 1);
json.Append("},");
}
json.Remove(json.Length - 1, 1);
json.Append("]");
json.Append("}");
return json.ToString();
}
public static DataTable getJson()
{
string constr = "Data Source = .;Integrated Security = SSPI;Initial Catalog = ajax;uid=sa;pwd=sa";
using (SqlConnection conn = new SqlConnection(constr))
{
string sqlstr = "select * from parkinfo";
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand(sqlstr, conn);
da.Fill(ds);
DataTable dt = ds.Tables[0];
return dt;
}
}
点击第一条记录的“查看详细” 为何url路径为http://localhost:1743/Details/undefined 而不是
http://localhost:1743/Details/1
undefined是js的关键字,那就可以确定,可能是后台生成json串的时候有错误,可能是json符号没有匹配,或者有为null的
导致前端解析时发生undefined的错误。
建议把生成的json仔细检查,或者用firebug查看返回的json数据。
不要手动拼JSON了。用Newtonsoft.Json
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
JsonConvert.SerializeObject(getJson(), new DataTableConverter());