Skip to main content
 首页 » 编程设计

c#之在 Web 方法中访问 JSON 调用的参数

2024年01月12日29jirigala

我不需要任何花哨或复杂的东西,我只是想将一个简单的字符串作为参数传递给我的网络方法。我该怎么做?

这里是web方法调用 [网络方法] public static ArrayList GetColumns(string TorVName)

这是 JSON 调用:

<script type="text/javascript" language="javascript">  
  var qs = new Querystring(); 
  var v1 = qs.get("TorVName"); 
  var jsonData = JSON.stringify(v1);   
        $().ready(function() { 
            $.ajax({ 
                type: "POST", 
                url: "Default.aspx/GetColumns", 
                data: jsonData, 
                contentType: "application/json; charset=utf-8", 
                dataType: "json", 
                success: function(msg) { 
       var optString = '<option value="-1">Select Column</option>'; 
 
      $.each(msg.d, function(index, item) { 
        optString += '<option value="' + item + '">' + item + '</option>'; 
        }); 
        $('select[name^=DDLColumns]').html(optString); 
                }, 
                error: function() { 
                    alert("Failed to load columns"); 
                } 
            }); 
        }); 
</script> 

这是我的网络方法的本质:

   public static ArrayList GetColumns(string TorVName) 
   { 
        String cnstr = "myconnectstring"; 
        //string TorVName = System.Web.HttpContext.Current.Request.QueryString["TableOrViewName"]; 
        //string TorVName = "Aged"; 
        //JavaScriptSerializer serializer = new JavaScriptSerializer(); 
        string TorVName = System.Web.HttpContext.Current.Request.QueryString["TOrVName"].ToString(); 
        string Sql = String.Empty; 

我认为这需要如此复杂和困难,这是愚蠢和令人沮丧的。

谢谢院长

请您参考如下方法:

在您的 ajax 请求中,对于数据参数,这样做:

data: "myData=" + jsonData, 

然后在您的网络方法中,将参数与“myData”匹配,如下所示:

[WebMethod()] 
public static ArrayList GetColumns(string myData) 
{ 
 .....Your code 
} 

如果名称相同,您的 Web 方法足够智能,可以将参数与实参匹配。一旦您收到您的字符串,您就可以反序列化它并调用您的非网络方法来实例化您的自定义数据对象。