我最近用zTree3.2 插件 作了一个动态生成树的例子,里面用到方法 是JQuery ajax调用Webservice做的,但是遇到问题,总会走到这里error: function (data, status, e) { ...}
我曾经试过,把方法中生成的串,直接写在页面上,运行时就可以正常显示,但是调用Webservice方法却总报错,这个问题,已困扰我好久了,哪位大哥能帮我看看,在线等,万分感谢.以下是HTML代码: <form id="form1" runat="server">
<div class="zTreeBackgroud">
<ul id="tree" class="ztree"></ul>
</div>
<input id="ok" type="button" value="alert已check的节点" />
</form>
<script type="text/javascript">
var zTreeObj;
var setting = {
check: {
enable: false
}
};
$(document).ready(function(){
var cId = "<%=strId %>";
var cName = "<%=strName %>";
var treeData;
$.ajax({
type:"post",
url:"WebService.asmx/getXmlData",
//url:"pageXmlData.aspx/getXmlData",
//contentType:"application/json;charset=utf-8",
dataType:"json",
data: "{nodesId:'" + cId + "',nodesName:'" + cName + "'}",
error: function (data, status, e) { alert(status); },
success:function(msg){
treeData = $.parseJSON(msg);
var treeJson = eval("(" + treeData.d + ")");
zTreeObj = $.fn.zTree.init($("#tree"), setting, treeJson);
}
})
})
</script>以下是WebService方法:[WebMethod]
public string getXmlData(string nodesId, string nodesName)
{
StringBuilder strBuilder = new StringBuilder();
ClassData cls = new ClassData();
string str = "select ItemID, ItemName,ItemParameter from ItemInfo where ClassID = '" + nodesId + "'";
DataTable dt = cls.GetDataTableInfo(str); //根节点
strBuilder.Append("[{");
strBuilder.Append("name:'" + nodesName + "'");
strBuilder.Append(",");
strBuilder.Append("no:'" + nodesId + "'");
strBuilder.Append(",");
strBuilder.Append("open:true");
strBuilder.Append(","); //子节点
strBuilder.Append("children:[");
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow dr = dt.Rows[i];
strBuilder.Append("{");
strBuilder.Append("name:'" + dr["ItemName"].ToString() + "'");
strBuilder.Append(",");
strBuilder.Append("no:'" + dr["ItemID"].ToString() + "'");
strBuilder.Append(",");
strBuilder.Append("open:true");
strBuilder.Append(","); //子节点
string[] srcPar = dr["ItemParameter"].ToString().Split('&');
strBuilder.Append("children:[");
for (int x = 0; x < srcPar.Length; x++)
{
//1:名称:苹果
string[] parInfo = srcPar[x].Split(':');
strBuilder.Append("{");
strBuilder.Append("name:'" + parInfo[1] + "'");
strBuilder.Append(",");
strBuilder.Append("no:'" + parInfo[0] + "'");
strBuilder.Append(","); //子节点
strBuilder.Append("children:[");
strBuilder.Append("{");
strBuilder.Append("name:'" + parInfo[2] + "'");
strBuilder.Append(",");
strBuilder.Append("no:'" + parInfo[0] + "-1'");
strBuilder.Append("}");
strBuilder.Append("]");
strBuilder.Append("}"); if (x != srcPar.Length - 1)
{
strBuilder.Append(",");
}
} strBuilder.Append("]");
strBuilder.Append("}"); if (i != dt.Rows.Count - 1)
{
strBuilder.Append(",");
}
}
strBuilder.Append("]");
strBuilder.Append("}");
strBuilder.Append("]");
return strBuilder.ToString();
}
我曾经试过,把方法中生成的串,直接写在页面上,运行时就可以正常显示,但是调用Webservice方法却总报错,这个问题,已困扰我好久了,哪位大哥能帮我看看,在线等,万分感谢.以下是HTML代码: <form id="form1" runat="server">
<div class="zTreeBackgroud">
<ul id="tree" class="ztree"></ul>
</div>
<input id="ok" type="button" value="alert已check的节点" />
</form>
<script type="text/javascript">
var zTreeObj;
var setting = {
check: {
enable: false
}
};
$(document).ready(function(){
var cId = "<%=strId %>";
var cName = "<%=strName %>";
var treeData;
$.ajax({
type:"post",
url:"WebService.asmx/getXmlData",
//url:"pageXmlData.aspx/getXmlData",
//contentType:"application/json;charset=utf-8",
dataType:"json",
data: "{nodesId:'" + cId + "',nodesName:'" + cName + "'}",
error: function (data, status, e) { alert(status); },
success:function(msg){
treeData = $.parseJSON(msg);
var treeJson = eval("(" + treeData.d + ")");
zTreeObj = $.fn.zTree.init($("#tree"), setting, treeJson);
}
})
})
</script>以下是WebService方法:[WebMethod]
public string getXmlData(string nodesId, string nodesName)
{
StringBuilder strBuilder = new StringBuilder();
ClassData cls = new ClassData();
string str = "select ItemID, ItemName,ItemParameter from ItemInfo where ClassID = '" + nodesId + "'";
DataTable dt = cls.GetDataTableInfo(str); //根节点
strBuilder.Append("[{");
strBuilder.Append("name:'" + nodesName + "'");
strBuilder.Append(",");
strBuilder.Append("no:'" + nodesId + "'");
strBuilder.Append(",");
strBuilder.Append("open:true");
strBuilder.Append(","); //子节点
strBuilder.Append("children:[");
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow dr = dt.Rows[i];
strBuilder.Append("{");
strBuilder.Append("name:'" + dr["ItemName"].ToString() + "'");
strBuilder.Append(",");
strBuilder.Append("no:'" + dr["ItemID"].ToString() + "'");
strBuilder.Append(",");
strBuilder.Append("open:true");
strBuilder.Append(","); //子节点
string[] srcPar = dr["ItemParameter"].ToString().Split('&');
strBuilder.Append("children:[");
for (int x = 0; x < srcPar.Length; x++)
{
//1:名称:苹果
string[] parInfo = srcPar[x].Split(':');
strBuilder.Append("{");
strBuilder.Append("name:'" + parInfo[1] + "'");
strBuilder.Append(",");
strBuilder.Append("no:'" + parInfo[0] + "'");
strBuilder.Append(","); //子节点
strBuilder.Append("children:[");
strBuilder.Append("{");
strBuilder.Append("name:'" + parInfo[2] + "'");
strBuilder.Append(",");
strBuilder.Append("no:'" + parInfo[0] + "-1'");
strBuilder.Append("}");
strBuilder.Append("]");
strBuilder.Append("}"); if (x != srcPar.Length - 1)
{
strBuilder.Append(",");
}
} strBuilder.Append("]");
strBuilder.Append("}"); if (i != dt.Rows.Count - 1)
{
strBuilder.Append(",");
}
}
strBuilder.Append("]");
strBuilder.Append("}");
strBuilder.Append("]");
return strBuilder.ToString();
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货