0

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

编辑:我有这段代码,我也想在 a 中执行此操作UserControl。在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();
    }
}

WebService通过 ajax 使用它:

    $.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);
        }
    });
4

1 回答 1

0

您可以在页面上调用 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 数据。

于 2013-05-11T05:10:29.833 回答