簡體   English   中英

Ajax調用以在UserControl.ascx中使用JSON數據

[英]Ajax call to use JSON data in UserControl.ascx

我在VisualWebPart項目中有一個usercontrol ,我想進行ajax調用以獲取json數據並在Jquery插件中使用它。 在簡單的web applications我使用一個Web服務,該服務返回JSON數據並通過Ajax在我的頁面中調用它,這聽起來像我無法在.ascx控件中使用Web服務,甚至無法使用Web Methods ,因此如何在UserControl調用方法來獲取JSON數據。

編輯:我有此代碼,我也想在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();
    }
}

並通過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);
        }
    });

您可以在頁面上調用網絡方法,並使頁面的方法從服務器代碼中提取。 您可以在控件中設置會話值,然后通過網絡方法從中提取。 由於控件不是頁面,因此它們實際上不提供任何服務,僅呈現它們。

在使用靜態網絡方法時,您將需要使用HttpContext來獲取會話數據。

http://msdn.microsoft.com/zh-CN/library/system.web.httpcontext.session.aspx

編輯

將用戶控件中的數據存儲在會話中:

Session["MyData"] = myDataObj;

您可以通過以下方式通過WebMethod訪問Session:

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

您可以使用JavaScriptSerialzer類從服務器對象和集合返回序列化的JSON。 http://msdn.microsoft.com/zh-CN/library/system.web.script.serialization.javascriptserializer.aspx

然后,您將該字符串返回到AJAX調用中,並獲得JSON數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM