我想用jquery ajax绑定下拉列表 绑定成功了 就是只绑定了一条数据,我知道是没有用each()循环,但是不会用,该怎么改??
js代码
<script type="text/javascript">
$(function(){
$.ajax({
type:"POST",
url:"DataBase.aspx?Event=ddlBind",
data:null,
beforeSend:function()
{
$(document.body).append("<div id='testId' style='color:red'>Loading...</div>")
},
error:function(){
alert("error");
},
success:function(mes)
{
var jsonResult=eval("("+mes+")");//轉換
var msg=jsonResult.msg;
var dlVal=jsonResult.dlValue;
var apHtml;
apHtml+="<div id='dlSelect'>"
if(msg=="ok")
{
var apHtml="<select id='select1'><option value='"+dlVal+"'>"+dlVal+"</option></select>"
$(document.body).append(apHtml);
$("#testId").hide();//隱藏Loading...
}//if end
apHtml+="</div>";
}//success end
})//ajax end
})
</script>后台处理代码
if (Request.QueryString["Event"] == "ddlBind")
{
string sql = "select sub_plate_name from mdsets_bbs_sub_plate";
DataSet ds = new DataSet();
StringBuilder sb = new StringBuilder();
ds = OracleHelper.GetDS(sql);
string dl = ds.Tables[0].Rows[0].ItemArray[0].ToString();
Response.Write("{msg:'ok',dlValue:'" + dl + "'}");//返回json格式
Response.End();
}
js代码
<script type="text/javascript">
$(function(){
$.ajax({
type:"POST",
url:"DataBase.aspx?Event=ddlBind",
data:null,
beforeSend:function()
{
$(document.body).append("<div id='testId' style='color:red'>Loading...</div>")
},
error:function(){
alert("error");
},
success:function(mes)
{
var jsonResult=eval("("+mes+")");//轉換
var msg=jsonResult.msg;
var dlVal=jsonResult.dlValue;
var apHtml;
apHtml+="<div id='dlSelect'>"
if(msg=="ok")
{
var apHtml="<select id='select1'><option value='"+dlVal+"'>"+dlVal+"</option></select>"
$(document.body).append(apHtml);
$("#testId").hide();//隱藏Loading...
}//if end
apHtml+="</div>";
}//success end
})//ajax end
})
</script>后台处理代码
if (Request.QueryString["Event"] == "ddlBind")
{
string sql = "select sub_plate_name from mdsets_bbs_sub_plate";
DataSet ds = new DataSet();
StringBuilder sb = new StringBuilder();
ds = OracleHelper.GetDS(sql);
string dl = ds.Tables[0].Rows[0].ItemArray[0].ToString();
Response.Write("{msg:'ok',dlValue:'" + dl + "'}");//返回json格式
Response.End();
}
......................
}
$(function(){
$.ajax({
type:"post",
url:"DataBase.aspx?Event=ddlBind",
data:null,
beforeSend:function()
{
$(document.body).append("<div id='testId' style='color:red'><img src='images/load_01.gif' title='Loading...' alt='Loading...'></div>")
},
error:function(){
alert("error");
},
success:function(mes)
{
var apHtml;
apHtml+="<div id='dlSelect'>"
$(mes).each(function(){
var jsonResult=eval("("+mes+")");//轉換
var msg=jsonResult.msg;
var dlVal=jsonResult.dlValue;
if(msg=="ok")
{
var apHtml="<select id='select1'><option value='"+dlVal+"'>"+dlVal+"</option></select>"
$(document.body).append(apHtml);
$("#testId").hide();//隱藏Loading...
}//if end
});
apHtml+="</div>";
}//success end
})//ajax end
})//function ready end
</script>
var st = JsonToObject(msg);
for (var i = 0; i < st.Rows.length; i++) {
$("#ddlTableConfigTitile").append("<option value='" + st.Rows[i].Value+ "'>" + st.Rows[i].Text+ "</option>");
}
你看看吧
?這是什嗎
var data = eval('[{"title":"测试标题","name":"a"},{"title":"测试标题","name":"b"}];');
var o = eval(data);//将json字符串转换成js对象
for (var i in o) {//循环json对象数组
for (var key in o[i]) {
alert("field:" + key + ", value:" + o[i][key]);
}
}}
<!--写了个例子-->
<script type="text/javascript">
$(document).ready(function(){
var select = "<select id=\"Select1\">"
$.ajax({
url:"Handler.ashx",
type:"post",
data:null,
dataType:"json",
success:function(result){
if(result.Index!=-1){
$.each(result,function(i){
select+="<option value='"+result[i].Index+"'>"+result[i].Name+"</option>";
})
}
select+="</select>";
$("body").append(select);
}
})
})
</script> context.Response.ContentType = "text/plain";
DataTable dt = getDataTbl();
System.Text.StringBuilder sb = new System.Text.StringBuilder("[");
for (int i = 0; i < dt.Rows.Count; i++)
{
sb.Append("{'Index':'" + dt.Rows[i][0] + "','Name':'" + dt.Rows[i][1] + "'},");
}
string result = sb.ToString().Substring(0, sb.ToString().Length - 1);
if (sb.Length < 3)
{
context.Response.Write("{\"Index\":\"-1\"}");
context.Response.End();
}
else
{
context.Response.Write(result+"]");
context.Response.End();
}
看了下你的代码
1:如果指定了dataType:"json"的话就不用在eval了
2:jq循环的话可以用
$.each(mes,function(i){})
3:如果后台返回多条语句的话json格式
var json=[{"ID":1,"Name":"zhangsan"},{"ID":2,"Name":"lisi"}];
for(var i=0;i<json.length;i++)
{
alert(json[i].ID+"---"+json[i].Name);
}
用大扩号扩起来。然后循环遍历它
上面的for循环就相当于$.each(mes,function(i)),其中的i是索引
刚写的例子家里没装sql,就直接动态创建了个datatable,原理一样
public DataTable getDataTbl()
{
DataTable dt = new DataTable();
dt.Columns.Add("ID", Type.GetType("System.Int32"));
dt.Columns.Add("Name", Type.GetType("System.String"));
string[] name = { "zhangsan", "lisi", "wangwu" };
for (int i = 0; i < name.Length; i++)
{
DataRow row = dt.NewRow();
row[0] = i + 1;
row[1] = name[i];
dt.Rows.Add(row);
}
return dt;
}
{
$(document.body).append("<div id='testId' style='color:red'>Loading...</div>")
},我想让这个加载条 时间延长点 怎么弄?