简体   繁体   English

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

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

Here i am using a webmethod 'InsertData'. 在这里,我使用webmethod'InsertData'。 Can I pass parameters like query string["json.aspx/InsertData?username="+name+"......"] instead of passing as data ? 我可以传递查询string["json.aspx/InsertData?username="+name+"......"]而不是传递data吗? Is there any advantages if I use like query string. 如果我使用像查询字符串一样有什么好处。

$.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");
        }
});

I'm thinking in 2 disavantages: 我在考虑2个不利因素:

  1. If you pass data using query string, the data is visible in the browser URL 如果使用查询字符串传递数据,则数据在浏览器URL中可见
  2. The URL have some length limitation depending on web server, so if you put a lot of data in the URL the server may reject your request. URL有一些长度限制,具体取决于Web服务器,因此如果您在URL中放入大量数据,服务器可能会拒绝您的请求。 IIS returns a 404.14 if Request Limits is exceed by the lenght of URL. 如果Request Limits超过URL的长度,IIS将返回404.14。

To pass a query string to Webmethod do the following: 要将查询字符串传递给Webmethod,请执行以下操作:

  • You have to set up the URL with the query string parameters 您必须使用查询字符串参数设置URL

  • You have to get this parameters at server side getting them from Request object. 您必须在服务器端获取此参数,从Request对象获取它们。

client side 客户端

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");
    }
   });

At the server side you have to inspect the Request object: 在服务器端,您必须检查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.

相关问题 将类似参数的字符串作为char *传递给外部方法 - Pass string like parameter to external method as char * 如何通过dapper传递XML字符串作为查询的参数? - How can I pass an XML string as a parameter of a query via dapper? 我可以将方法作为参数传递吗? - Can I pass a method as a parameter? 如何将参数传递给LIMIT? 我可以将所有查询输出保存在一个字符串中吗? - How can i pass parameter to LIMIT ? Can i save all query output in one string? 如何将C#类似字符串的变量传递给sbyte *参数? - How can I pass a C# String-like variable to a sbyte* parameter? 如何将参数传递给此方法 - How can i pass parameter to this method 如何将EventHandler作为方法参数传递 - How can I pass EventHandler as a method parameter 如何在方法中传入一个可以是一个或两个的字符串参数? selenium c# - How do I pass in a string parameter that can either be one or two within a method? selenium c# 如何在Web Api C#中将字符串作为参数传递 - How can Pass string as parameter in Web Api C# 当我将它作为参数传递给另一个方法时,我的字符串的内容丢失了吗? - The Contents of my String are Lost When I Pass it to Another Method as a Parameter?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM