WEBMETHOD jQuery的AJAX调用不返回任何结果
嗨我建立了其中网络媒体库,WEBMETHOD jQuery的AJAX调用不返回任何结果
我有一个简单的webmethod从数据库中读取标签。
public class Tags
{
public string tag_ID { get; set; }
public string tag { get; set; }
public string total_count { get; set; }
}
[WebMethod]
public static List<Tags> GetTags()
{
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = ConfigurationManager.ConnectionStrings["taggerConnectionString"].ConnectionString;
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "GetTagCount";
cmd.Connection = conn;
List<Tags> tag = new List<Tags>();
conn.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
tag.Add(new Tags
{
tag_ID = sdr["tag_ID"].ToString(),
tag = sdr["tag"].ToString(),
total_count = sdr["total_count"].ToString()
});
}
}
conn.Close();
return tag;
}
}
}
和一个javascript,我打电话按钮单击以显示结果在div中。 但是我没有收到任何结果。没有错误也正在显示。
$(document).ready(function() { $('#getTags').click(myFunction); });
function myFunction() {
$.ajax({
type: "POST",
url: "/App/WebForm1.aspx/GetTags",
data: '{}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function (response) {
alert(response.d);
},
error: function (response) {
alert(response.d);
}
});
function OnSuccess(response) {
var Tags = response.d;
$(Tags).each(function() {
var tag = this.tag;
$("#results").append(" <b>" + tag + "</b>. ");
})
};
}
在web.config中设置这样的:
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="2147483647"/>
</webServices>
</scripting>
</system.web.extensions>
你的web服务代码将是:
public class Tags
{
public string tag_ID { get; set; }
public string tag { get; set; }
public string total_count { get; set; }
}
[WebMethod]
public static void GetTags()
{
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = ConfigurationManager.ConnectionStrings["taggerConnectionString"].ConnectionString;
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "GetTagCount";
cmd.Connection = conn;
List<Tags> tag = new List<Tags>();
conn.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
tag.Add(new Tags
{
tag_ID = sdr["tag_ID"].ToString(),
tag = sdr["tag"].ToString(),
total_count = sdr["total_count"].ToString()
});
}
}
conn.Close();
System.Web.Script.Serialization.JavaScriptSerializer jSearializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string result = jSearializer.Serialize(tag);
System.Web.HttpContext.Current.Response.ContentType = "application/json";
System.Web.HttpContext.Current.Response.Write(result);
System.Web.HttpContext.Current.Response.End();
}
}
}
没有结果。不用找了。 –
你以后cmd.CommandText = “GetTagCount” 缺少一条线;它是cmd.CommandType = CommandType.StoredProcedure;
它没有帮助。 –
你说得对。但这不是根本原因。我的服务根本没有被调用。感谢帮助。 –
我想我找到了解决方案。
当我试图使用铬的网络选项卡进行故障排除..我得到了这个结果。
{"Message":"Authentication failed.","StackTrace":null,"ExceptionType":"System.InvalidOperationException"}
从中我理解的是,其因为在模板配置的
在App_Start/RouteConfig.cs这一行:
settings.AutoRedirectMode = RedirectMode.Permanent;
有人建议对它发表评论。
现在既然这样做了。任何人都可以建议专家&评论这条线的利弊。如果从安全角度来看它不是一个好主意,任何解决方法。
嗨,大家好,我已经分别测试了给出的所有三个建议。没有积极的结果呢。 –