在UserControl.ascx中使用JSON数据的Ajax调用

本文关键字:数据 Ajax 调用 JSON UserControl ascx | 更新日期: 2023-09-27 18:13:16

我在VisualWebPart项目中有一个usercontrol。我想有一个ajax调用来获得json数据,并在Jquery插件中使用它。在简单的web applications中,我使用一个返回JSON数据的web服务,并通过Ajax在我的页面中调用它,这听起来就像我不能在我的。ascx控件中使用web服务甚至Web Methods,所以我怎么能在我的UserControl中调用一个方法来获取JSON数据。

EDIT:我有这个代码,我也想在UserControl中这样做。in WebService:

public class getTimeLineService : System.Web.Services.WebService
{
    [WebMethod]
    public String getJsonTimeLine()
    {
        List<TimeLine> list = new List<TimeLine> { new TimeLine { headline = "Vine", text = "<p>Vine Test</p>", startDate = "1391,12,12", endDate = "1392,1,27" }, new TimeLine { headline = "Sh*t Politicians Say", text = "<p>In true political fashion, his character rattles off common jargon heard from people running for office.</p>", startDate = "1392,1,26", endDate = "1392,1,27" } };
        System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
        StringBuilder sb = new StringBuilder();
        serializer.Serialize(list, sb);
        return sb.ToString();
    }
}

并通过ajax使用此WebService:

    $.ajax({
        type: "POST",
        url: "getTimeLineService.asmx/getJsonTimeLine",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            var jsonDate = eval( data.d );
        },
        failure: function (msg) {
            alert(msg);
        }
    });

在UserControl.ascx中使用JSON数据的Ajax调用

您可以在页面上调用webmethod,并从服务器代码中提取页面的方法。您可以在控件中设置会话值,并通过webmethod从中提取。由于控件不是页面,它们实际上不提供任何服务,只是被呈现。

当你使用静态web方法时,你需要使用HttpContext来获取会话数据。

http://msdn.microsoft.com/en-us/library/system.web.httpcontext.session.aspx

编辑

在会话中存储来自用户控件的数据:

Session["MyData"] = myDataObj;

你可以通过WebMethod访问Session:

var myRetrievedDataObj = HttpContext.Session["MyData"];

你可以使用JavaScriptSerialzer类从服务器对象和集合返回序列化的JSON。http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx

然后将该字符串返回给AJAX调用,就得到了JSON数据。