如何在c#中获取发布的数据

时间:2012-08-08 01:34:06

标签: asp.net post webmethod

我在我的应用程序中使用ajax,我必须使用$.post方法。

通常,发送到服务器的数据是键值对。我可以通过它们:

HttpContext.Current.Request.QueryPara['name'];
....

但在某些情况下,要发送到服务器的数据不包含名称。

它只是一个xml段。

像这样:

var data='<data>xxxxx<data>';
$.post('http://server/service.asmx/test',data,function(){
  //callback
},'xml');

那我怎样才能在网络方法中获取数据?

2 个答案:

答案 0 :(得分:0)

您必须使用'json'dataType将数据传递给Web方法。

看看样本:

Service.asmx


[ScriptService]
[WebService(Namespace = "http://localhost/testapp/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService{
   [WebMethod]
   public int Square(int no){ return no * no;}
}

和JavaScript代码请求此 webmethod

<script type="text/javascript">
$(function () {
    $("#button1").click(function () {
        $.ajax({
            type: "post",
            url: "service.asmx/Square",
            data: "{no: 10}",
            dataType: "json",
            contentType: "application/json",
            success: function (data) {
                alert("Result :" + data.d);
            },
            error: function (src,type,msg) {
                alert(msg); //open JavaScript console for detailed exception cause
            }
        });
    });
});
</script>

<body>
  <input type="button" id="button1" value="Square" />
</body>

答案 1 :(得分:0)

我不确定asp.net是否可以做到这一点。但你总能提供这样的名字:

var data= { data: '<data>xxxxx<data>'};
$.post('http://server/service.asmx/test',data,function(){
  //callback
},'xml');

然后在服务器上,您可以通过

访问
var data = Request.Params("data");