由于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;
}//前台一直取不到数据
遇到的问题是: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;
}//前台一直取不到数据
后来用的百度的jquery(<script type="text/javascript" src="https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/jquery/jquery-1.10.2.min_65682a2.js"></script>)测试ok的顺便告诉你,你的success里的解析有问题,不能这样的,我下面把我的ajax方法发给你,你参考后再试一下吧$.ajax({
url: 'Default.aspx/Test',
type: 'post',
dataType: 'json',
contentType: 'application/json;charset=utf-8',
success: function (data) {
var arrModel = JSON.parse(data.d);
$.each(arrModel.d,function (a,b) {
$("#drp_Author").append("<option name='newOptions' value='" + b.id + "'>" + b.Autor + "</option>")
})
},
error: function (xhr, ts, et) {
alert(ts);
}
})