由于webform都是服务器控件,下拉框数据获取量有点大,所以需求是点击下拉框它才从后台获取数据选择,服务器控件只有鼠标点击SelectedIndexchange事件,想点击下拉框,再让下拉框去后台获取事件,所以用HTML控件,用ajax来获取后台数据。
遇到的问题是:ajax不接收数据,提交到了后台的方法里了,后台方法也将json数据返回,可是ajax的success没有接收到,一直是data not a defined,有没有大佬来看一下这到底是什么错!
//这是一个下拉框点击事件的函数
function selectClick() {
//遍历所有option
var count = document.getElementById('drp_Author').options.length;
if (count < 2) {
$.ajax({
url: 'JournalArticle.aspx/SetSelect',
type: 'post',
dataType:'json',
contentType: 'application/json;charset=utf-8',
success: function (d) {
$(d).each(function () {
$("#drp_Author").append("<option name='newOptions' value='" + this.id + "'>" + this.Author + "</option>")
})
},
error: function (d) {
alert(d);
}
})
}
}
//这是我的下拉框
<select id="drp_Author" style="width:100px;" onclick="selectClick()">
<option value="0">--请选择--</option>
</select>
//这是我的后台代码
/// <summary>
/// 给页面回传
/// </summary>
/// <returns></returns>
[System.Web.Services.WebMethod()]
public static string SetSelect()
{
string strData = string.Empty;
manager_JournalArticle man = new manager_JournalArticle();
strData = man.DataSelect();//获取数据的一个方法,在这里直接将数据化为json格式
return strData;
}
//前台一直取不到数据