如何在C#.net中读取POSTED Json数据?

时间:2012-08-20 08:06:38

标签: c# jquery json

我想读取在我的c#.net应用程序中以JSON发布的数据?我对这个JSON和POST方法很新吗?

任何人都可以帮助我吗? 我从page1发布数据。测试其他第2页(在我的情况下是smsstaus.aspx)。 我想读一下JSON在Page2的PageLoad中发布数据。

示例代码.....

 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 () { }
    });
}

3 个答案:

答案 0 :(得分:3)

您可以在smsstatus.aspx中定义 WebMethod (例如SendStatus) 一个实现可能看起来像这样(从我的头脑中)

[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

答案 1 :(得分:0)

当你使用Jquery并且你在数据中抛出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 () { }
    });
}

你可以使用正常的POST,但如果你想在C#中使用JSON,请参阅此aritcle

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

答案 2 :(得分:0)

如果您想要请求aspx(WebForm)而不是contentType,请不要更改WebMethod。 (将数据发送到服务器时,请使用此内容类型。默认为“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();