如何在C#.net中读取已发布的Json数据?

3

我希望在我的c#.net应用程序中读取以JSON格式发布的数据?我对JSON和POST方法非常陌生?

有人能帮帮我吗? 我正在从页面1发布数据。为了测试目的,将其发送到其他页面2(在我的情况下是smsstaus.aspx)。 我想在Page2的PageLoad中读取已发布的JSON数据。

示例代码.....

 function SendSMSStatus() {
    $.ajax({
        type: "POST",
        url: "myurl/smsstatus.aspx",
        data: '{"SmsSid":"' + $("#<%= txtSmsSid.ClientID%>").val() + '","SmsStaus":"' + $("#<%= txtSmsStaus.ClientID%>").val() + '"}',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            alert('update the db here');

        },
        error: function () { }
    });
}

你是在使用带有MVC的ASP还是没有MVC的ASP? - Snake Eyes
3个回答

3
您可以在smsstatus.aspx(例如SendStatus)中定义一个WebMethod。 实现可能看起来像这样(仅供参考)
[WebMethod] 
public static void SendStatus(string sid, string status) 
{ 
    // retrieve status
}

现在您可以创建一个请求来调用这个方法,像这样:
 function SendSMSStatus() {       
    $.ajax({       
        type: "POST",       
        url: "myurl/smsstatus.aspx/SendStatus",       
        data: '{"SmsSid":"' + $("#<%= txtSmsSid.ClientID%>").val() + '","SmsStaus":"' + $("#<%= txtSmsStaus.ClientID%>").val() + '"}',       
        contentType: "application/json; charset=utf-8",       
        dataType: "json",       
        success: function (msg) {       
            alert('update the db here');       

        },       
        error: function () { }       
    });

.NET 将会将 JSON 字符串反序列化并将其作为参数传递给 SendStatus。

0

当你使用Jquery并将JSON放入数据中时,它会在普通的Post中发生变化,但现在你所做的会导致问题,请将代码更改为:

 function SendSMSStatus() {
    $.ajax({
        type: "POST",
        url: "myurl/smsstatus.aspx",
        data: {"SmsSid":$("#<%= txtSmsSid.ClientID%>").val(),"SmsStaus": $("#<%= txtSmsStaus.ClientID%>").val()},
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            alert('update the db here');

        },
        error: function () { }
    });
}

你可以使用普通的POST方法,但如果你想在C#中使用JSON进行操作,请参考这篇文章。

http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2010/08/22/using-c-4.0-and-dynamic-to-parse-json.aspx


0

如果您想请求 aspx (WebForm) 而不是 WebMethod,请不要更改 contentType。(向服务器发送数据时,请使用此内容类型。默认值为 "application/x-www-form-urlencoded")。

$.ajax({
        type: "POST",
        url: "myurl/smsstatus.aspx",
        data: '{"SmsSid":"' + $("#<%= txtSmsSid.ClientID%>").val() + '","SmsStaus":"' + $("#<%= txtSmsStaus.ClientID%>").val() + '"}',
        dataType: "json", // The type of data that you're expecting back from the server. 
        success: function (msg) {
            alert(msg.d);
        },
        error: function () { }
    });

Page_Load 处理程序接收数据,

 //Read Form data
 string testData = Request["SmsSid"] + " " + Request["SmsStaus"];

 //Prepare Json string - output
 Response.Clear();
 Response.ContentType = "application/json";
 Response.Write("{ \"d\": \"" + testData +"\" }");
 Response.Flush();
 Response.End();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接