繁体   English   中英

我可以像查询字符串一样传递web方法参数吗?

[英]Can i pass web method parameter like query string?

在这里,我使用webmethod'InsertData'。 我可以传递查询string["json.aspx/InsertData?username="+name+"......"]而不是传递data吗? 如果我使用像查询字符串一样有什么好处。

$.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8", 
        url: "json.aspx/InsertData",
        data: "{'username':'" + name + "','subj':'" + subject + "','desc':'" + body + "'}",
        dataType: "json",
        success: function(data) {
                 var obj = data.d;
                 if (obj == 'true') {
                       $('#txtname').val('');
                       $('#txtsubject').val('');
                       $('#txtbody').val('');
                       $('#lblmsg').html("Details Submitted Successfully");
                 }
        },
        error: function(result) {
                 alert("Error");
        }
});

我在考虑2个不利因素:

  1. 如果使用查询字符串传递数据,则数据在浏览器URL中可见
  2. URL有一些长度限制,具体取决于Web服务器,因此如果您在URL中放入大量数据,服务器可能会拒绝您的请求。 如果Request Limits超过URL的长度,IIS将返回404.14。

要将查询字符串传递给Webmethod,请执行以下操作:

  • 您必须使用查询字符串参数设置URL

  • 您必须在服务器端获取此参数,从Request对象获取它们。

客户端

var url = "json.aspx/InsertData?username=" + name + "&subj=" + subject + "&desc=" + body;

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8", 
    url: url,
    dataType: "json",
    success: function(data) {
             var obj = data.d;
             if (obj == 'true') {
                   $('#txtname').val('');
                   $('#txtsubject').val('');
                   $('#txtbody').val('');
                   $('#lblmsg').html("Details Submitted Successfully");
             }
    },
    error: function(result) {
             alert("Error");
    }
   });

在服务器端,您必须检查Request对象:

    [WebMethod(EnableSession=true)]
    public static object InsertData()
    {
         var name = HttpContext.Current.Request.QueryString["username"];
         var subject = HttpContext.Current.Request.QueryString["subject"];
         var desc = HttpContext.Current.Request.QueryString["desc"];

         // Do some work
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM