无法使用jquery ajax Asp.net webforms从数据库加载数据

时间:2016-04-15 05:14:31

标签: jquery asp.net ajax webforms

我要从数据库加载推文但是它不起作用请检查我在哪里做错了

这是我要加载推文的div

<div id="load_tweets">
</div>

这是就绪函数内的setinterval方法

setInterval(function () {
  $('#load_tweets').load("CS.aspx/fetch").fadeIn("slow");
  },1000);

这是获取[webMethod]

[System.Web.Services.WebMethod]
public static DataTable fetch()
{
SqlConnection con = new SqlConnection("data source=dbcomments;initial     catalog=CommentSystemUsingAjax;integrated security=true");
SqlDataAdapter da = new SqlDataAdapter("select * from tbl_tweet order by tweet_id desc", con);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}

我也尝试过这种方式

[System.Web.Services.WebMethod]
public static string fetch(string tweet)
{
SqlConnection con = new SqlConnection("data source=dbcomments;initial catalog=CommentSystemUsingAjax;integrated security=true");
SqlDataAdapter da = new SqlDataAdapter("select * from tbl_tweet order by tweet_id desc", con);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
    tweet = dt.Rows[0]["tweet"].ToString();
}
return tweet;

}

请帮帮我

2 个答案:

答案 0 :(得分:0)

将Web方法返回类型从数据表更改为字符串

[WebMethod]
public static string fetch()
{
    SqlConnection con = new SqlConnection("connection string");
    SqlDataAdapter da = new SqlDataAdapter(query, con);
    DataTable dt = new DataTable();
    da.Fill(dt);
    return JsonConvert.SerializeObject(dt);     
}

现在使用Ajax调用静态方法...

$(document).ready(function () {
    setInterval(function () 
    {
        FetchData();
    },1000);
});

function FetchData() {
    try {
        $.ajax({
            async: true,
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "/Path/fetch",                    
            dataType: "json",
            success: function (data) {
                if (data.d != "") {
                    var json_obj = $.parseJSON(data.d);
                    // get array of data in json_obj 
                }
            },
            error: function (xhr, status, err) {
            }
        });
    } catch (e) {
    }
}

答案 1 :(得分:0)

您应该将页面的确切链接提供给加载函数的参数

setInterval(function () {
  $('#load_tweets').load("/CS.aspx/fetch").fadeIn("slow");
},1000);

也回到数据表你不能让我。你可以只返回字符串。你可以使用json。你可以逃脱渲染ASP Net Control