3

我想在我的 c#.net 应用程序中读取以 JSON 格式发布的数据?我对这种 JSON 和 POST 方法很陌生?

谁能帮帮我吗?我正在从第 1 页发布数据。到其他 page2(在我的情况下为 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 () { }
    });
}
4

3 回答 3

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

于 2012-08-20T08:23:04.680 回答
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

于 2012-08-20T08:14:23.447 回答
0

如果您contentType想请求 aspx (WebForm) 而不是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();
于 2012-08-20T08:32:20.927 回答