微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以传递查询字符串之类的Web方法参数吗?

在这里,我正在使用网络方法’InsertData’.我可以传递查询字符串[“ json.aspx / InsertData?username =” name“ ……”]之类的参数,而不作为数据传递吗?如果使用类似查询字符串的方法,有什么好处吗?

$.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种破坏:

>如果使用查询字符串传递数据,则该数据在浏览器URL中可见
>根据Web服务器的不同,URL有一些长度限制,因此,如果在URL中放入大量数据,服务器可能会拒绝您的请求.如果“请求限制”超出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
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐